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

  • Pergunta

  • 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á!

    quarta-feira, 18 de novembro de 2009 15:13

Respostas

  • 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
    segunda-feira, 23 de novembro de 2009 18:27

Todas as Respostas

  • 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
    quarta-feira, 18 de novembro de 2009 16:40
  • 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.
    quinta-feira, 19 de novembro de 2009 20:46
  • 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
    sexta-feira, 20 de novembro de 2009 17:03
  • 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

    segunda-feira, 23 de novembro de 2009 12:11
  • 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
    segunda-feira, 23 de novembro de 2009 13:50
  • 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.

    segunda-feira, 23 de novembro de 2009 14:30
  • 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
    segunda-feira, 23 de novembro de 2009 18:27
  • 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
    sábado, 5 de junho de 2010 02:36