none
Como mandar um e-mail com informações do Excel via VBA?

    Question

  • galera,

    tenho uma planilha do excel com informaçoes de datas (controles de equipamentos), onde há uma periodicidade para ser realizada. entao até essa data é o limite para esse controle. quando essa data é ultrapassada uma célula referente ao controle (existe uma fórmula) muda de cor (fica vermelha) e aparece uma frase "FORA DO PRAZO".
    por isso queria achar um jeito de quando ficar fora do prazo, automaticamente um e-mail é mandado alertando que está fora do prazo.

    agradeço desde já!

    Wednesday, November 18, 2009 3:13 PM

Answers

  • Luiz,

    Infelizmente não vou poder lhe passar o código completo porque eu necessitaria de mais informações sobre qual linha e coluna estaria essa informação "FORA DO PRAZO". Precisaria também verificar a sua planilha para colocar o código no módulo correto. Além disso, teriamos que verificar qual o servidor de e-mails que está sendo utilizado.

    O código que você está me mostrando realiza uma automação no Outlook para enviar o e-mail dentro do Excel. É um tópico um tanto quanto intermediário em VBA. Se você não entende muito bem a linguagem, fica complicado explicar. Sugiro que você leia um tutorial sobre VBA antes de tentar fazer algo mais complicado.

    Só para tentar ajudá-lo, leia o link que eu lhe enviei e tente utilizar uma das abordagens listadas.

    Estou disponível para eventuais dúvidas.

    Att.

    Ari C. Raimundo
    Monday, November 23, 2009 6:27 PM

All replies

  • Luiz,

    Talvez o link abaixo possa lhe ajudar:

    Different Ways to Take Advantage of the E-mail Features of Excel
    http://msdn.microsoft.com/en-us/library/aa203718%28office.11%29.aspx

    Att.

    Ari C. Raimundo
    Wednesday, November 18, 2009 4:40 PM
  • Ari,

    esse link foi de grande ajuda, mas não resolveu todos os meus problemas.
    por exemplo: quero que mande e-mail automaticamente quando uma célula estiver escrito "FORA DO PRAZO" (isso acontece por meio de uma fórmula, quando está dentro do prazo aparece "OK" e quando não está aparece "FORA DO PRAZO"). então quero que quando estrapolar o prazo, ou seja quando a célula mudar de "OK" para "FORA DO PRAZO", um e-mail seja mandado para determinada pessoa.

    como eu disse o link ajudou muito, mas falta essa parte ainda.

    agradeço desde já!

    Luiz.
    Thursday, November 19, 2009 8:46 PM
  • Luiz,

    Em sua planilha é possível implementar o evento Change e então verificar se o valor foi alterado para "FORA DO PRAZO" e enviar o e-mail.

    Ex:

    Private Sub Worksheet_Change(ByVal Target As Range)

        If (Target.Row = linhaCelula And Target.Column = colunaCelula) Then
            If Target.Value = "FORA DO PRAZO" Then
                ' envia e-mail
                ...
            End If
        End If

    End Sub


    Att.

    Ari C. Raimundo
    Friday, November 20, 2009 5:03 PM
  • Ari,

    valeu também por essa resposta, mas tenho uma dúvida: aonde eu coloco o e-mail da pessoa para qual quero mandar? e o conteúdo e o assunto que quero escrever. se possível, por favor, me mande o código completo ( e que não sou muito bom em vba).

    valeu de novo Ari!

    Luiz.

    OBS.: atualmente tenho esse código:

    Sub Envio_Email()

    Set myOlApp = CreateObject("Outlook.Application")

    Set myItem = myOlApp.CreateItem(olMailItem)

    Set myAttachments = myItem.Attachments

    Set Planilha = Sheets(1)

    Conteúdo = "Contacte um analista caso haja qualquer dúvida."

    N = Planilha.Cells(Planilha.Rows.Count, 2).End(xlUp).Row

    For i = 2 To N

        DataRef = CDate(Planilha.Cells(i, 2).Value)

        If DataRef < Date Then

        Conteúdo = Conteúdo & Trim(HPLC.Cells(D, 4)) & vbTab & vbTab

        Conteúdo = Conteúdo & Trim(Planilha.Cells(i, 2)) & vbTab & vbTab

        Conteúdo = Conteúdo & Trim(Planilha.Cells(i, 3)) & vbTab & vbTab

        Conteúdo = Conteúdo & Trim(Planilha.Cells(i, 4)) & vbLf

        End If

    Next i

    With myItem

        .To = "xxxxx@hotmail.com"

        .Subject = "Preventivas Fora do Prazo"

        .Body = Conteúdo

        .Send

    End With

    End Sub

    Monday, November 23, 2009 12:11 PM
  • Luiz,

    Segue respostas com base no código que você possui:

    1 - Aonde eu coloco o e-mail da pessoa para qual quero mandar?

    Defina a propriedade To, ou seja, somente altere a string "xxxxx@hotmail.com" do código.

    2 - Conteúdo e o assunto que quero escrever.

    O assunto é a propriedade Subject (assunto em inglês). O conteúdo é a variável do tipo string chamada "Conteúdo", modifique essa variável com o conteúdo que deseja em seu e-mail.

    Att.

    Ari C. Raimundo
    Monday, November 23, 2009 1:50 PM
  • Ari,

    com esse código, não dá certo, pois ele não reconhece quando está fora do prazo (porque no código não faz referência). então queria que você me mandasse esse código com os pontos que falei: onde eu coloco o e-mail da pessoa, o conteúdo e o assunto.

    Private Sub Worksheet_Change(ByVal Target As Range)

        If (Target.Row = linhaCelula And Target.Column = colunaCelula) Then
            If Target.Value = "FORA DO PRAZO" Then
                ' envia e-mail
                ...
            End If
        End If

    End Sub

    se você pudesse me mandar o código já pronto seria bom demais, porque, como eu disse, não entendo muita coisa de vba.

    agradeço desde já!

    Luiz.

    Monday, November 23, 2009 2:30 PM
  • Luiz,

    Infelizmente não vou poder lhe passar o código completo porque eu necessitaria de mais informações sobre qual linha e coluna estaria essa informação "FORA DO PRAZO". Precisaria também verificar a sua planilha para colocar o código no módulo correto. Além disso, teriamos que verificar qual o servidor de e-mails que está sendo utilizado.

    O código que você está me mostrando realiza uma automação no Outlook para enviar o e-mail dentro do Excel. É um tópico um tanto quanto intermediário em VBA. Se você não entende muito bem a linguagem, fica complicado explicar. Sugiro que você leia um tutorial sobre VBA antes de tentar fazer algo mais complicado.

    Só para tentar ajudá-lo, leia o link que eu lhe enviei e tente utilizar uma das abordagens listadas.

    Estou disponível para eventuais dúvidas.

    Att.

    Ari C. Raimundo
    Monday, November 23, 2009 6:27 PM
  • Prezado Ari C. Raimundo,

    Atualmente estou tentando desenvolver uma planilha que simplifique minhas atividades na empresa em que trabalho. Diariamente tenho que acompanhar os prazos de validade de alguns documentos da empresa, posto alguns terem prazo de 30 dias.

    Não entendo nada de VBA, acabei esbarrando no assunto quando da necessidade de otimizar meu tempo. Dessa forma venho requerer sua ajuda para desenvolver uma planilha que se comunique com o outlook, avisando-me do termino de um prazo (bom, na verdade eh pra avisar com alguns dias de antecedencia).

    Como proceder para lhe passar o modelo, algo similar com a planilha que utilizo na empresa?

    Eh possivel isolar os prazos para que sejam avisados separadamente, de acordo com seus vencimento? Eh possivel encaminha cada prazo a um responsavel, a destinatarios diferentes?

    Acredite, nao encontrei ningum que saiba VBA suficiente para ajudar-me com esse trabalho, e tenho esperança que vc possa me ajudar.

    Desde ja, agradeço pela atenção.

    Att,

    Alvaro.

    e-mail para contato alvarobecco1@hotmail.com


    Joao Grilo
    Saturday, June 05, 2010 2:36 AM