Você está na página 1de 10

Enviar email pelo excel Página 1 de 10

Developer Network Entrar http://www.facebook.com/microsoftdeveloper


Assinaturas http://plus.google.com/111221966647232053570/
do MSDN https://twitter.com/msdev
Obter ferramentas

Tecnologias Downloads Programas Comunidade Documentação Exemplos

Fazer uma Pergunta Pesquisar threads relacionados Enviar Consulta

Acesso rápido

Usuário com melhor resposta Enviar email pelo excel


Archived Forums > Excel

Pergunta

Pessoal,

tenho uma planilha com uma coluna chamada data e gostaria que qdo uma data desta coluna expirasse (ex.:
data<data_atual) o excel me enviasse um email automaticamente. Tem como fazer isso?
0
Entrar
para
Votar Desde ja, agradeço pela atenção de todos.

Aline Alves

terça-feira, 25 de março de 2008 19:07

Respostas

https://social.msdn.microsoft.com/Forums/pt-BR/e1b192bb-9edf-4b2d-b03e-2f6b0bc... 11/09/2015
Enviar email pelo excel Página 2 de 10

Vamos lá, Aline.

Antes de mais nada, você precisa ir no Editor do VBA (ALT+F11) >> Ferramentas >> Referências e na lista
de Referências Disponíveis, selecionar a opção Microsoft Outlook 1X.0 Object Library. (1X.0 pode ser 11.0 /
0 12.0, ou ouro dependendo da versão dos seus aplicativos) e em seguida Ok.
Entrar
para Esta passagem é importante para permitir que o Excel manipule objetos do Outlook, única forma que
Votar conheço de acrescentar informações ao corpo do e-mail.

Montei o código abaixo para realizar o que vc pediu.

Ainda não estou satisfeito com a formatação final do corpo do e-mail, mas agora é ajuste fino.

Como não sei a tua urgência envio esta versão parcial, enquanto dou os arremates finais na versão
definitva.

PS: Não esqueça de trocar o endereço de e-mail do código, ou vai encher a minha caixa de entrada de
informações.

[ ]s

Code Snippet
Sub Envio_Email()

Set myOlApp = CreateObject("Outlook.Application")


Set myItem = myOlApp.CreateItem(olMailItem)
Set myAttachments = myItem.Attachments
Set Planilha = Sheets(1)

Conteúdo = "Cod" & vbTab & vbTab & "Data" & vbTab & vbTab & "Empresa" & vbTab & vbTab &
"Produto" & vbLf

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(Planilha.Cells(i, 1)) & 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 = "adilson.soledade@hotmail.com"
    .Subject = "Envio de mensagem de datas expiradas"
    .Body = Conteúdo
    .Save
End With

End Sub

segunda-feira, 31 de março de 2008 17:26

Todas as Respostas

https://social.msdn.microsoft.com/Forums/pt-BR/e1b192bb-9edf-4b2d-b03e-2f6b0bc... 11/09/2015
Enviar email pelo excel Página 3 de 10

Boa tarde, Aline.

Vc utiliza o Outlook para envio de e-mails?

O teste e envio do e-mial poderia ser feito na abertura do arquivo?


0
Entrar
para
O procedimento abaixo atende às duas premissas. Na abertura do arquivo testa se uma data de referência
Votar é anterior à data do sistema e, em caso afirmativo, envia o arquivo via e-mail, colocando como título a
mensagem "Arquivo expirado" combinado com o nome do arquivo, para o destinatário definido em
Recipients

Para que funcione é necessário inserir o código como evento da Pasta de Trabalho

Code Snippet
Private Sub Workbook_Open()
    Dim DataRef
    DataRef = Sheets(1).Cells(1, 1).Value
    If DataRef < Date Then
    ActiveWorkbook.SendMail _
    Recipients:="responsavel@email.com.br", _
    Subject:="Arquivo expirado " & ThisWorkbook.Name
    End If
End Sub

[ ]s

terça-feira, 25 de março de 2008 20:59

Olá, Adilson.

Bem, tá quase lá. O código tá executando, mas ele não tá abrindo o Microsft Outlook (programa de email
0
que utilizo). Ao invés disso, o excel mostra uma tela informando que um programa de email está sendo
Entrar
para aberto e se eu permito isso ou não. Clico em SIM, mas nada acontece. Vc sabe o que há de errado? Tenho
Votar outras dúvidas tb:

1) se eu quiser determinar uma range para ser verificada, ou seja, na coluna A eu tenho as datas e quero
que ele verifique em toda aquela coluna quem já expirou e quem não, então, como eu escrevo a range
(a2:a25000, por exemplo)? Sheets(1).range.value

2) se eu quiser determinar o conteúdo da mensagem, o corpo do email, tem como?!

3) na verdade eu preciso de uma rotina que me diga qdo essas datas estão expiradas ou não e eu só vou
saber cado eu abra tal arquivo, certo? será que existe alguma coisa no Windows XP que faça isso
automaticamente?

Mais uma vez, mto obgda pela sua ajuda.

Aline Alves

quarta-feira, 26 de março de 2008 18:34

https://social.msdn.microsoft.com/Forums/pt-BR/e1b192bb-9edf-4b2d-b03e-2f6b0bc... 11/09/2015
Enviar email pelo excel Página 4 de 10

http://support.microsoft.com/kb/816644/en-us?spid=2512&sid=139

quarta-feira, 26 de março de 2008 19:19 Moderador


0
Entrar
para
Votar

https://social.msdn.microsoft.com/Forums/pt-BR/e1b192bb-9edf-4b2d-b03e-2f6b0bc... 11/09/2015
Enviar email pelo excel Página 5 de 10

Aline Alves wrote:


Olá, Adilson.

0
Entrar
para
Bem, tá quase lá. O código tá executando, mas ele não tá abrindo o Microsft Outlook
Votar (programa de email que utilizo). Ao invés disso, o excel mostra uma tela informando
que um programa de email está sendo aberto e se eu permito isso ou não. Clico em
SIM, mas nada acontece. Vc sabe o que há de errado? Tenho outras dúvidas tb:

1) se eu quiser determinar uma range para ser verificada, ou seja, na coluna A eu tenho
as datas e quero que ele verifique em toda aquela coluna quem já expirou e quem
não, então, como eu escrevo a range (a2:a25000, por exemplo)? Sheets(1).range.value

2) se eu quiser determinar o conteúdo da mensagem, o corpo do email, tem como?!

3) na verdade eu preciso de uma rotina que me diga qdo essas datas estão expiradas
ou não e eu só vou saber cado eu abra tal arquivo, certo? será que existe alguma coisa
no Windows XP que faça isso automaticamente?

Mais uma vez, mto obgda pela sua ajuda.

Aline Alves

Aline,

No meu computador aparece a mesma mensagem, porém o e-mail é enviado. Vc alterou o endereço de
e-mail que coloquei e substitui-o por um válido? Se a resposta for afirmativa, verifique se o item consta na
pasta de e-mails enviadas.

Agora estou com umaa dúvidas:

Vc quer o e-mail seja enviado se houver uma data expirada ou várias?

Qual a condição a ser imposta?

O usuário deverá receber uma lista com os itens cujas datas foram expiradas, ou para cada data expirada
deve ser enviado um e-mail?

Quanto a outra solução, vc poderia usar a própria agenda do outlook para cadastrar compromissos com
datas de expiração e envio de aviso para os usuários.

Vou pesquisar a questão do corpo do e-mail, mas a resposta anterior já fornece boas informações sobre o
tema.

A propósito, qual a versão do Excel que vc está utilizando?

[ ]s

quarta-feira, 26 de março de 2008 20:11

https://social.msdn.microsoft.com/Forums/pt-BR/e1b192bb-9edf-4b2d-b03e-2f6b0bc... 11/09/2015
Enviar email pelo excel Página 6 de 10

É verdade, a msg aparece, mas o email é mandado.

Bem, vamos responder às suas perguntas.


0
Entrar
para
Votar
"Vc quer o e-mail seja enviado se houver uma data expirada ou várias?" Várias.  Na verdade é uma coluna
com datas em cada linha. O Excel olhará em cada linha e achado qq data expirada ele deverá enviar um
email com todas essas datas expiradas e suas respectivas colunas.

"Qual a condição a ser imposta?" O critério de expiração é para datas menores que a data atual:

"O usuário deverá receber uma lista com os itens cujas datas foram expiradas, ou para cada data expirada
deve ser enviado um e-mail?" Receber uma lista, em um úinico email, com as informações daquela data
expirada. por isso o interesse em saber como escrever no corpo do email.

Exemplo:

Cod          Data                Empresa                 Produto

1               21/03/08           XYZ                        Mesa

2               22/03/08          Beta Soluções         Cadeira

3               05/04/08          Apinfy                      Sapato

O sistema deverá enviar um único email com a seguinte informação:

Assunto do email: Datas expiradas

Corpo do email: Cod          Data                Empresa                 Produto

                           1               21/03/08           XYZ                        Mesa

                           2               22/03/08          Beta Soluções         Cadeira

Adilson, mto obga mesmo pela sua atenção.

Aline Alves

segunda-feira, 31 de março de 2008 15:03

https://social.msdn.microsoft.com/Forums/pt-BR/e1b192bb-9edf-4b2d-b03e-2f6b0bc... 11/09/2015
Enviar email pelo excel Página 7 de 10

Vamos lá, Aline.

Antes de mais nada, você precisa ir no Editor do VBA (ALT+F11) >> Ferramentas >> Referências e na lista
de Referências Disponíveis, selecionar a opção Microsoft Outlook 1X.0 Object Library. (1X.0 pode ser 11.0 /
0 12.0, ou ouro dependendo da versão dos seus aplicativos) e em seguida Ok.
Entrar
para Esta passagem é importante para permitir que o Excel manipule objetos do Outlook, única forma que
Votar conheço de acrescentar informações ao corpo do e-mail.

Montei o código abaixo para realizar o que vc pediu.

Ainda não estou satisfeito com a formatação final do corpo do e-mail, mas agora é ajuste fino.

Como não sei a tua urgência envio esta versão parcial, enquanto dou os arremates finais na versão
definitva.

PS: Não esqueça de trocar o endereço de e-mail do código, ou vai encher a minha caixa de entrada de
informações.

[ ]s

Code Snippet
Sub Envio_Email()

Set myOlApp = CreateObject("Outlook.Application")


Set myItem = myOlApp.CreateItem(olMailItem)
Set myAttachments = myItem.Attachments
Set Planilha = Sheets(1)

Conteúdo = "Cod" & vbTab & vbTab & "Data" & vbTab & vbTab & "Empresa" & vbTab & vbTab &
"Produto" & vbLf

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(Planilha.Cells(i, 1)) & 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 = "adilson.soledade@hotmail.com"
    .Subject = "Envio de mensagem de datas expiradas"
    .Body = Conteúdo
    .Save
End With

End Sub

segunda-feira, 31 de março de 2008 17:26

https://social.msdn.microsoft.com/Forums/pt-BR/e1b192bb-9edf-4b2d-b03e-2f6b0bc... 11/09/2015
Enviar email pelo excel Página 8 de 10

Adilson Soledade wrote:


Vamos lá, Aline.

Antes de mais nada, você precisa ir no Editor do VBA (ALT+F11) >> Ferramentas >>
0
Referências e na lista de Referências Disponíveis, selecionar a opção Microsoft Outlook
Entrar
para 1X.0 Object Library. (1X.0 pode ser 11.0 / 12.0, ou ouro dependendo da versão dos
Votar seus aplicativos) e em seguida Ok.

Esta passagem é importante para permitir que o Excel manipule objetos do Outlook,
única forma que conheço de acrescentar informações ao corpo do e-mail.

Montei o código abaixo para realizar o que vc pediu.

Ainda não estou satisfeito com a formatação final do corpo do e-mail, mas agora é
ajuste fino.

Como não sei a tua urgência envio esta versão parcial, enquanto dou os arremates
finais na versão definitva.

PS: Não esqueça de trocar o endereço de e-mail do código, ou vai encher a minha
caixa de entrada de informações.

[ ]s

Code Snippet
Sub Envio_Email()

Set myOlApp = CreateObject("Outlook.Application")


Set myItem = myOlApp.CreateItem(olMailItem)
Set myAttachments = myItem.Attachments
Set Planilha = Sheets(1)

Conteúdo = "Cod" & vbTab & vbTab & "Data" & vbTab & vbTab & "Empresa" &
vbTab & vbTab & "Produto" & vbLf

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(Planilha.Cells(i, 1)) & 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 = "adilson.soledade@hotmail.com"
    .Subject = "Envio de mensagem de datas expiradas"
    .Body = Conteúdo
    .Save
End With

End Sub

mas como faço para enviar o email se o programa de email que está sendo utilizado nao for o outlook
express?

sexta-feira, 18 de abril de 2008 14:39

https://social.msdn.microsoft.com/Forums/pt-BR/e1b192bb-9edf-4b2d-b03e-2f6b0bc... 11/09/2015
Enviar email pelo excel Página 9 de 10

Boa tarde pessoal!

Estou utilizando a seguinte VBA para enviar emails com um determiado Range utilizando o Excel.
Ocorre que eu gostaria que esse envio fosse automático, ou seja, eu fixaria 02 datas no mês para ser enviado
0 o email.
Entrar
para
Votar Code Snippet
Sub Enviar_email()

' Select the range of cells on the active worksheet.

ActiveSheet.Range("A3:C130").Select

' Show the envelope on the ActiveWorkbook.

ActiveWorkbook.EnvelopeVisible = True

' Set the optional introduction field thats adds

' some header text to the email body. It also sets

' the To and Subject lines. Finally the message

' is sent.

With ActiveSheet.MailEnvelope

.Introduction = "Próximo pagamento:"

.Item.To = "fulano@email.com"

.Item.Subject = "Pagamento"

.Item.Send

End With

End Sub

Teria como fazer isso?

Obrigado a todos de antemão.

Rodrigo A. de Brito Bastos


rodrigoabb@gmail.com

quarta-feira, 17 de dezembro de 2008 18:45

https://social.msdn.microsoft.com/Forums/pt-BR/e1b192bb-9edf-4b2d-b03e-2f6b0bc... 11/09/2015
Enviar email pelo excel Página 10 de 10

adilsonsoledade
Aline

0
Entrar voces conseguiram fazer o arquivo funcionar?
para
Votar estou precisando montar essa formula, estou tentando usar as dicas acima, mas nao to conseguindo, nao
conhecia VBA, nao sei como inserir a formula, fiquei com duvida se tenho que indicar a posição das celulas
onde serao consideradas as datas,
poderim por favor me enviar a planilha com a formula em uso para eu ver como foi inserido?

meu email eh - ernandesgpjr@gmail.com

agradeço a atenção

obrigado.

Ernandes Jr.

domingo, 31 de maio de 2009 20:54

Centros do desenvolvedor Recursos de aprendizagem Comunidade Suporte


Microsoft Virtual Academy Fóruns Suporte autônomo
Windows
Channel 9 Blogs

Office Pontes de interoperabilidade Codeplex


Programas
MSDN Magazine
Visual Studio BizSpark (para iniciantes)

DreamSpark

Microsoft Azure Imagine Cup

Mais...

Brasil (Português) Boletim informativo Privacidade & cookies Termos de uso Marcas comerciais © 2015 Microsoft

https://social.msdn.microsoft.com/Forums/pt-BR/e1b192bb-9edf-4b2d-b03e-2f6b0bc... 11/09/2015

Você também pode gostar