Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Enviar E-mail direto do Excel sem usar o Outlook
Enviar E-mail direto do Excel sem usar o Outlook
Saudações Pessoal,
Estou na "busca" de uma macro(código VBA) para enviar E-mail direto do Excel sem usar o Outlook.
Estou analisando alguns tópicos aqui no fórum, mas até o momento só encontrei exemplos que usam o Outlook.
Obs: encontrei na internet dois Links de sites que no meu ponto de vista são muito bons exemplos.... MAS, não estou conseguindo usar os códigos ali exemplificados... não sei se os códigos ali postados faltam algum complemento... ou éh eu que não tenho conhecimento suficiente para fazê-los funcionar.
Vou expor para os senhores os 2 Links que encontrei na internet, e que no meu ponto de vista são boas fontes de informações.... Talvez os senhores consigam colocá-los em funcionalidade e expor aqui no tópico quem sabe uma "planilha exemplo" com o uso de um desses dois exemplos dos Links, ou se tiverem uma sugestão melhor, também será muito bem vinda.
* segue abaixo os dois Links que encontrei na internet:
1) http://guiadoexcel.com.br/enviar-email- ... -o-outlook
2) http://cristina-mundialnoticias4.blogsp ... ha-do.html
No demais ..... sou grato desde já.
Estou na "busca" de uma macro(código VBA) para enviar E-mail direto do Excel sem usar o Outlook.
Estou analisando alguns tópicos aqui no fórum, mas até o momento só encontrei exemplos que usam o Outlook.
Obs: encontrei na internet dois Links de sites que no meu ponto de vista são muito bons exemplos.... MAS, não estou conseguindo usar os códigos ali exemplificados... não sei se os códigos ali postados faltam algum complemento... ou éh eu que não tenho conhecimento suficiente para fazê-los funcionar.
Vou expor para os senhores os 2 Links que encontrei na internet, e que no meu ponto de vista são boas fontes de informações.... Talvez os senhores consigam colocá-los em funcionalidade e expor aqui no tópico quem sabe uma "planilha exemplo" com o uso de um desses dois exemplos dos Links, ou se tiverem uma sugestão melhor, também será muito bem vinda.
* segue abaixo os dois Links que encontrei na internet:
1) http://guiadoexcel.com.br/enviar-email- ... -o-outlook
2) http://cristina-mundialnoticias4.blogsp ... ha-do.html
No demais ..... sou grato desde já.
- Fabio Trindade
- Manda bem
- Mensagens: 161
- Registrado em: Dom Abr 24, 2011 4:07 pm
Re: Enviar E-mail direto do Excel sem usar o Outlook
Boa noite, Mathmatic.
Visto sua duvida sobre enviar e-mail através do VBA sem utilização do Outlook, pois o 1º link informado esta funcionando normal, pois suas configurações estão sendo direcionadas para utilizar o serviço do Gmail, Código testado:
* Vale lembrar que é necessário fazer a referencia a Biblioteca Microsoft CDO for Windows 2000 Library
Visto sua duvida sobre enviar e-mail através do VBA sem utilização do Outlook, pois o 1º link informado esta funcionando normal, pois suas configurações estão sendo direcionadas para utilizar o serviço do Gmail, Código testado:
* Vale lembrar que é necessário fazer a referencia a Biblioteca Microsoft CDO for Windows 2000 Library
Código: Selecionar todos
'Necessario realizar a chamada da biblioteca Microsoft CDO for Windows 2000 Library
'Testado no Office 2010, funcionou perfeito
'Baseado no código disponibilizado em: http://www.a1vbcode.com/snippet-3691.asp
Function EnviaEmail()
Dim iMsg, iConf, Flds
'Seta as variáveis, lembrando que o objeto Microsoft CDO deverá estar habilitado em Ferramentas->Referências->Microsoft CDO for Windows 2000 Library
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
'Configura o componente de envio de email
schema = "http://schemas.microsoft.com/cdo/configuration/"
Flds.Item(schema & "sendusing") = 2
'Configura o smtp
Flds.Item(schema & "smtpserver") = "smtp.gmail.com"
'Configura a porta de envio de email
Flds.Item(schema & "smtpserverport") = 465
Flds.Item(schema & "smtpauthenticate") = 1
'Configura o email do remetente
Flds.Item(schema & "sendusername") = "teste@gmail.com"
'Configura a senha do email remetente
Flds.Item(schema & "sendpassword") = "sua_senha"
Flds.Item(schema & "smtpusessl") = 1
Flds.Update
With iMsg
'Email do destinatário
.To = "Email_de_Destino@gmail.com;"
'Seu email
.From = "Email_de_Origem@gmail.com"
'Título do email
.Subject = "Isto é um teste de Envio de email"
'Mensagem do e-mail, você pode enviar formatado em HTML
.HTMLBody = "Mensagem enviada com o gmail."
'Seu nome ou apelido
.Sender = "Teste"
'Nome da sua organização
.Organization = "Sua_Empresa"
'email de responder para
.ReplyTo = "Email_de_Origem@gmail.com"
'Anexo a ser enviado na mensagem
.AddAttachment ("C:\Users\fabio.trindade\Desktop\teste_envio_de_email_sem_outlook.txt")
'Passa a configuração para o objeto CDO
Set .Configuration = iConf
'Envia o email
SendEmailGmail = .Send
End With
'Limpa as variáveis
Set iMsg = Nothing
Set iConf = Nothing
Set Flds = Nothing
End Function
' Para atribuar em um botao em sua planilha
Sub Enviar_Email()
Call EnviaEmail
End Sub
Re: Enviar E-mail direto do Excel sem usar o Outlook
Saudações sr. Fábio,
Estou tentando adaptar este código para enviar e-mail através do e-mail do site da empresa para qual eu trabalho (cujo site não éh o Gmail).
MAS.., estou tendo dificuldades.... não consegui adaptar !
Obs: fiz a configuração para a biblioteca Microsoft CDO for Windows 2000 Library, conforme eh necessário, mas... mesmo assim não deu certo ainda !
Então venho lhe pedir:
Poderia fazer adaptações no código, para..., por exemplo, enviar e-mail automatomático através do BOL (cujo site éh: http://www.bol.uol.com.br/)
* vou criar um e-mail no BOL só para poder testar depois o código.
Obs: o e-mail oficial a ser usado nas atividades será o da empresa para qual eu trabalho (cujo site não éh o Gmail e nem o BOL), .....MAS.. se eu ver como o senhor fez adaptações nesse código para enviar e-mail direto pelo BOL, então talvez eu conseguirei também adaptar o código para o e-mail da empresa.
sou grato desde já.
Estou tentando adaptar este código para enviar e-mail através do e-mail do site da empresa para qual eu trabalho (cujo site não éh o Gmail).
MAS.., estou tendo dificuldades.... não consegui adaptar !
Obs: fiz a configuração para a biblioteca Microsoft CDO for Windows 2000 Library, conforme eh necessário, mas... mesmo assim não deu certo ainda !
Então venho lhe pedir:
Poderia fazer adaptações no código, para..., por exemplo, enviar e-mail automatomático através do BOL (cujo site éh: http://www.bol.uol.com.br/)
* vou criar um e-mail no BOL só para poder testar depois o código.
Obs: o e-mail oficial a ser usado nas atividades será o da empresa para qual eu trabalho (cujo site não éh o Gmail e nem o BOL), .....MAS.. se eu ver como o senhor fez adaptações nesse código para enviar e-mail direto pelo BOL, então talvez eu conseguirei também adaptar o código para o e-mail da empresa.
sou grato desde já.
- Fabio Trindade
- Manda bem
- Mensagens: 161
- Registrado em: Dom Abr 24, 2011 4:07 pm
Re: Enviar E-mail direto do Excel sem usar o Outlook
Bom dia, Mathmatic.
Andei olhando na internet e consegui encontrar alguns códigos:
http://maximoaccess.maisforum.com/t3548 ... 0x80040217
http://www.scriptbrasil.com.br/forum/to ... l-por-vba/
Consegui adaptar o código que ficou assim:
Andei olhando na internet e consegui encontrar alguns códigos:
http://maximoaccess.maisforum.com/t3548 ... 0x80040217
http://www.scriptbrasil.com.br/forum/to ... l-por-vba/
Consegui adaptar o código que ficou assim:
Código: Selecionar todos
Private Sub EnviaEmailBol()
On Error GoTo erromail
Dim Mens As CDO.Message
Dim Config As CDO.Configuration
Set Config = New CDO.Configuration
With Config
.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtps.bol.com.br" 'aqui uso o provedor da empresa que trabalho
.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587 ' porta usada pelo bol
.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "email" 'aqui usei meu email
.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "senha" 'coloque a senha do seu email
.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Fields.Update
End With
Set Mens = New CDO.Message
With Mens
Set .Configuration = Config
.From = "email@bol.com.br" 'quem envia
'If Not IsNull(Me.txtDeMail) Then
.Sender = "email@bol.com.br" 'email de quem envia.
'End If
'If Not IsNull(Me.txtCOculta) Then
.BCC = ""
'End If
.Subject = "Teste Email Bol" 'caixa texto assunto
.TextBody = "Mensagem teste Bol" 'Caixa texto com o texto
.To = "destino@bol.com.br" 'caixa texto para quem vai o email"
'If Not IsNull(Me.txtAnexo) Then
.AddAttachment ("C:\Users\fabio.trindade\Desktop\teste_envio_de_email_sem_outlook.txt")
'End If
.Send ' envia
End With
MsgBox "Menssagem enviada com sucesso"
Set Mens = Nothing
Set Config = Nothing
Exit Sub
erromail:
MsgBox Err.Number & " " & Err.Description
Set Mens = Nothing
Set Config = Nothing
Exit Sub
End Sub
Re: Enviar E-mail direto do Excel sem usar o Outlook
Saudações sr. Fábio Trindade,
O código funcionou e já estou conseguindo enviar automaticamente por VBA arquivos (em anexo) através do Bol.
Aproveito para lhe perguntar 2 (duas) coisas:
1) na linha do código sugerido onde diz: ("http://schemas.microsoft.com/cdo/config ... serverport") = 587 ' Porta usada pelo Bol...... pergunto: referente ao numero 587 ? ...... como faço para descobrir o numero da porta usada pelo provedor da empresa para qual trabalho ?....tenho que perguntar para o pessoal de suporte do sistema... OU... dentro do próprio sistema eu consigo descobrir esse numero que corresponde a porta usada pelo provedor da empresa ?
2) Ao invés de eu "anexar" o arquivo.xls ao e-mail, Teria como colar no corpo do E-mail somente a planilha (ABA) desejada ?... OU.... talvez selecionar apenas uma parte desejada da ABA (tipo da célula A1 até a célula F20) e colar essa seleção (com as configurações originais) no corpo do e-mail ?
Dessa forma eu enviaria somente informações específicas da planilha(ABA) ativa.
Obs: estou analisando um código (sugerido pelo senhor para o tópico Macro para Enviar Email) dentro do fórum, cujo Link éh...: viewtopic.php?t=2059&p=9557
vou ver se consigo adaptar ao último codigo sugerido para este meu tópico (cujo qual já está funcionando para enviar com anexos) ..... MAS .... se quiser dar uma "ajudinha" na adaptação, serei agradecido.
No demais, muito obrigado.
O código funcionou e já estou conseguindo enviar automaticamente por VBA arquivos (em anexo) através do Bol.
Aproveito para lhe perguntar 2 (duas) coisas:
1) na linha do código sugerido onde diz: ("http://schemas.microsoft.com/cdo/config ... serverport") = 587 ' Porta usada pelo Bol...... pergunto: referente ao numero 587 ? ...... como faço para descobrir o numero da porta usada pelo provedor da empresa para qual trabalho ?....tenho que perguntar para o pessoal de suporte do sistema... OU... dentro do próprio sistema eu consigo descobrir esse numero que corresponde a porta usada pelo provedor da empresa ?
2) Ao invés de eu "anexar" o arquivo.xls ao e-mail, Teria como colar no corpo do E-mail somente a planilha (ABA) desejada ?... OU.... talvez selecionar apenas uma parte desejada da ABA (tipo da célula A1 até a célula F20) e colar essa seleção (com as configurações originais) no corpo do e-mail ?
Dessa forma eu enviaria somente informações específicas da planilha(ABA) ativa.
Obs: estou analisando um código (sugerido pelo senhor para o tópico Macro para Enviar Email) dentro do fórum, cujo Link éh...: viewtopic.php?t=2059&p=9557
vou ver se consigo adaptar ao último codigo sugerido para este meu tópico (cujo qual já está funcionando para enviar com anexos) ..... MAS .... se quiser dar uma "ajudinha" na adaptação, serei agradecido.
No demais, muito obrigado.
- Fabio Trindade
- Manda bem
- Mensagens: 161
- Registrado em: Dom Abr 24, 2011 4:07 pm
Re: Enviar E-mail direto do Excel sem usar o Outlook
Boa noite, Mathmatic.
1) Referente a sua primeira duvida as configurações de porta no bol eu encontrei no site deles mesmo http://email.bol.uol.com.br/ajuda/confi ... .jhtm#rmcl e aqui nesse site tem boas dicas sobre quais as portas para cada servidor de e-mail http://www.truquesemacetes.com/html/sm/ ... tp_p01.htm. Ainda na primeira duvida o área responsável por prestar suporte técnico em sua empresa tem as configurações exatas de quais porta de smtp que estão utilizando.
2) Já sua segunda duvida é hum pouco complicada, eu consegui essa façanha de copiar um intervalo e colocar no corpo do e-mail mantendo a formação no outlook porém o código pega todo o conteúdo da aba ativa e não um intervalo determinado ex.: se na aba ativa tiver informação até a coluna " X " vai colar a informação no corpo independente se tiver coluna vazia dentro do exemplo. Código retira dessa pagina http://www.rondebruin.nl/win/s1/outlook/mail.htm que por sinal é muito bacana as informações disposta nela.
Obs.: Vou procurar o código que consegui fazer o tal feito e postar aqui no fórum para os colegas
*** Senhores se minhas citações de links de outros lugares estiverem errado, me avise para que eu possa postar de forma correta! ***
1) Referente a sua primeira duvida as configurações de porta no bol eu encontrei no site deles mesmo http://email.bol.uol.com.br/ajuda/confi ... .jhtm#rmcl e aqui nesse site tem boas dicas sobre quais as portas para cada servidor de e-mail http://www.truquesemacetes.com/html/sm/ ... tp_p01.htm. Ainda na primeira duvida o área responsável por prestar suporte técnico em sua empresa tem as configurações exatas de quais porta de smtp que estão utilizando.
2) Já sua segunda duvida é hum pouco complicada, eu consegui essa façanha de copiar um intervalo e colocar no corpo do e-mail mantendo a formação no outlook porém o código pega todo o conteúdo da aba ativa e não um intervalo determinado ex.: se na aba ativa tiver informação até a coluna " X " vai colar a informação no corpo independente se tiver coluna vazia dentro do exemplo. Código retira dessa pagina http://www.rondebruin.nl/win/s1/outlook/mail.htm que por sinal é muito bacana as informações disposta nela.
Obs.: Vou procurar o código que consegui fazer o tal feito e postar aqui no fórum para os colegas
*** Senhores se minhas citações de links de outros lugares estiverem errado, me avise para que eu possa postar de forma correta! ***
Re: Enviar E-mail direto do Excel sem usar o Outlook
Saudações sr. Fábio,
voltando ao assunto referente envio de e-mail automático usando a porta do Bol, está funcionando muito bem através do meu PC.
MAS .... quando tento fazer isso, usando o servidor da empresa, ocorre ERROR, pois para acessar a internet da empresa, usa-se um servidor PROXY.
Então, ao tentar executar o código ocorre falha .... Tem como fazer o código enviar e-mail automático usando o servidor PROXY ?
obrigado pela atenção .....
voltando ao assunto referente envio de e-mail automático usando a porta do Bol, está funcionando muito bem através do meu PC.
MAS .... quando tento fazer isso, usando o servidor da empresa, ocorre ERROR, pois para acessar a internet da empresa, usa-se um servidor PROXY.
Então, ao tentar executar o código ocorre falha .... Tem como fazer o código enviar e-mail automático usando o servidor PROXY ?
obrigado pela atenção .....
Re: Enviar E-mail direto do Excel sem usar o Outlook
Procurando ajuda para essa mesma situação vim parar aqui.
Eu tenho uma planilha de cotação de preços.
Na primeira aba fica uma listagem e na frente tem tres colunas, de tres fornecedores, depois, uso uma fórmula para definir qual foi o vencedor da licitação.
Tenho ainda mais três abas, essas abas são cada uma de um fornecedor, gostaria de poder enviar sem o Outlook, para o email de cada fornecedor apenas a aba dele.
Nas Plan2, Plan3 e Plan4 ficam o resultado e na célula B2 o campo onde devo colocar o email do fornecedor.
A minha idéia é colocar um botão em cada aba que envia do meu email (email do usuário da planilha) para o email cadastrado na célula B2 aquela aba apenas.
Alguém para me ajudar com isso?
Eu tenho uma planilha de cotação de preços.
Na primeira aba fica uma listagem e na frente tem tres colunas, de tres fornecedores, depois, uso uma fórmula para definir qual foi o vencedor da licitação.
Tenho ainda mais três abas, essas abas são cada uma de um fornecedor, gostaria de poder enviar sem o Outlook, para o email de cada fornecedor apenas a aba dele.
Nas Plan2, Plan3 e Plan4 ficam o resultado e na célula B2 o campo onde devo colocar o email do fornecedor.
A minha idéia é colocar um botão em cada aba que envia do meu email (email do usuário da planilha) para o email cadastrado na célula B2 aquela aba apenas.
Alguém para me ajudar com isso?
Re: Enviar E-mail direto do Excel sem usar o Outlook
Olá Fábio segui todos os procedimentos que explicou, consigo enviar o email normalmente, mas quando chega na hora do anexo, dá erro.
Mensagem:Erro de Compilação. Referência Inválida ou não qualificada. O que eu faço. Sou iniciante no VBA.
Mensagem:Erro de Compilação. Referência Inválida ou não qualificada. O que eu faço. Sou iniciante no VBA.
- Alex Abreu
- Colaborador
- Mensagens: 31
- Registrado em: Sáb Jun 30, 2018 4:40 pm
- Localização: Rio do Campo/SC
- Contato:
Re: Enviar E-mail direto do Excel sem usar o Outlook
Bom dia a todos, desculpem desenterrar esse tópico, mas estou com um problemaFabio Trindade escreveu: ↑Sex Mai 30, 2014 1:06 pm Bom dia, Mathmatic.
Andei olhando na internet e consegui encontrar alguns códigos:
http://maximoaccess.maisforum.com/t3548 ... 0x80040217
http://www.scriptbrasil.com.br/forum/to ... l-por-vba/
Consegui adaptar o código que ficou assim:Código: Selecionar todos
Private Sub EnviaEmailBol() On Error GoTo erromail Dim Mens As CDO.Message Dim Config As CDO.Configuration Set Config = New CDO.Configuration With Config .Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtps.bol.com.br" 'aqui uso o provedor da empresa que trabalho .Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587 ' porta usada pelo bol .Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 '.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True .Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "email" 'aqui usei meu email .Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "senha" 'coloque a senha do seu email .Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60 .Fields.Update End With Set Mens = New CDO.Message With Mens Set .Configuration = Config .From = "email@bol.com.br" 'quem envia 'If Not IsNull(Me.txtDeMail) Then .Sender = "email@bol.com.br" 'email de quem envia. 'End If 'If Not IsNull(Me.txtCOculta) Then .BCC = "" 'End If .Subject = "Teste Email Bol" 'caixa texto assunto .TextBody = "Mensagem teste Bol" 'Caixa texto com o texto .To = "destino@bol.com.br" 'caixa texto para quem vai o email" 'If Not IsNull(Me.txtAnexo) Then .AddAttachment ("C:\Users\fabio.trindade\Desktop\teste_envio_de_email_sem_outlook.txt") 'End If .Send ' envia End With MsgBox "Menssagem enviada com sucesso" Set Mens = Nothing Set Config = Nothing Exit Sub erromail: MsgBox Err.Number & " " & Err.Description Set Mens = Nothing Set Config = Nothing Exit Sub End Sub
Estou usando esse módulo que menciono acima, confgurei todas as informações de email, senha, etc
Como ele tem um comando que informa o código do erro e a descrição do mesmo o que eu achei muito útil por sinal
aparece o erro -2147220973 Falha na conexão do transporte com o servidor
como posso resolver isso?
Grato!
EDIT: Boa Tarde já achei onde se encontrava o erro, minha senha que estava salva numa variável estava em branco
PS: Achei ótimo esse sistema de tratamento de erro, ele explica certinho todos diferentes tipos de erros 1004 que encontrei, muito útil que até salvei num módulo complementar para usar em todos os meus sistemas
Código: Selecionar todos
'Colocar essa Parte no início de qualquer macro
Dim Erro
On Error goto Erro
'Colocar essa Parte no Fim de qualquer Macro!
If Erro = 0 Then Exit Sub
Erro:
MsgBox Err.Number & " " & Err.Description