VBA – Enviar e-mails do Excel pelo Gmail
In this Article
Este tutorial mostrará como enviar e-mails do Excel pelo Gmail usando VBA.
Como Adicionar a Referência do Microsoft CDO
Para permitir que o Excel envie e-mails pelo Gmail, primeiro é necessário adicionar a biblioteca de referência CDO ao seu projeto do Excel.
No Editor VBA, clique em Ferramentas, Referências.
Procure a Referência do CDO da Microsoft e clique em OK.
Como Enviar um E-Mail pelo GMail
Para enviar um e-mail do Excel via Gmail, primeiro você precisa declarar um objeto CDO (Dim gMail as CDO.Message).
Em segundo lugar, você precisaria configurar a autenticação SSL para a mensagem em seu código. Isso significa que você precisa definir o servidor SMTP e os detalhes da porta para que seu e-mail seja enviado corretamente, bem como configurar seu nome de usuário e senha.
No trecho de código abaixo, isso é o que você precisaria no início de sua função do Excel. Você precisa de um destinatário de e-mail (strTo) e um assunto (strSubject), mas o CC e o corpo do e-mail podem ser variáveis opcionais.
Sub CriarEmail(strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) 'Crie um objeto CDO Dim gMail As CDO.Message Set gMail = New CDO.Message 'Habilite a autenticação SSL gMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True 'Tornar a autenticação SMTP Enabled=true (1) gMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'Definir o servidor SMTP e a porta Detalhes gMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" gMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 gMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'Definir seu nome de usuário e senha para sua própria conta do gmail aqui gMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "johnsmith@gmail.com" gMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*********"
'Atualizar os campos de configuração gMail.Configuration.Fields.Update
Feito isso, você pode criar seu e-mail e concluir a função.
'defina as propriedades do e-mail e o arquivo a ser enviado
With gMail
.Subject = "Escreva o Assunto Aqui"
.From = "stitchmel@gmail.com"
.To = strTo
.TextBody = strBody
End With
'para enviar o e-mail
gMail.Send
End Sub
Em seguida, você pode chamar sua função com o seguinte código.
Sub EnviarEmail()
'criar o corpo do e-mail
Dim strTexto as string
strTexto = "Bom dia. Espero que você esteja bem - este é um e-mail de teste"
'preencha os argumentos da função - deixe o CC em branco e coloque uma vírgula como espaço reservado
Call CriarEmail("jim.smith@gmail.com", "Email de Teste", , strTexto)
End sub
Envio de uma Pasta de Trabalho via GMail
Para enviar uma pasta de trabalho como anexo via GMail, você pode criar uma função muito parecida com a anterior, com alguns acréscimos.
Você precisa adicionar código para selecionar a pasta de trabalho e, em seguida, anexar o arquivo selecionado ao e-mail.
Usaremos o comando FileDialog do Microsoft Office para selecionar o arquivo a ser enviado e, em seguida, usaremos a propriedade AddAttachment do e-mail para adicionar o arquivo como anexo.
Function EnviarPasta(strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) As Boolean
On error goto eh:
'Criar um objeto CDO
Dim gMail As CDO.Message
Set gMail = New CDO.Message
'Habilitar autenticação SSL
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
'Tornar a autenticação SMTP Enabled=true (1)
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'Definir o servidor SMTP e a porta Detalhes
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'Definir o nome de usuário e a senha da sua própria conta do gmail aqui
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "johnsmith@gmail.com"
gMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*********"
'Atualizar os campos de configuração
gMail.Configuration.Fields.Update
'Selecionar o arquivo a ser enviado com a caixa de diálogo de arquivo da Microsoft
Dim strFileToSend As String
Dim dlgFile As FileDialog
Dim strItem As Variant
Dim nDlgResult As Long
Set dlgFile = Application.FileDialog(msoFileDialogFilePicker)
'filtro apenas para arquivos Excel e csv
dlgFile.Filters.Add "Excel Files", "*.csv; *.xls; *.xlsx; *.xlsm"
nDlgResult = dlgFile.Show
If nDlgResult = -1 Then
If dlgFile.SelectedItems.Count > 0 Then
For Each strItem In dlgFile.SelectedItems
strFileToSend = strItem
Next strItem
End If
End If
'definir as propriedades de e-mail e o arquivo a ser enviado
With gMail
.Subject = "Escreva o assunto aqui"
.From = "stitchmel@gmail.com"
.To = strTo
.TextBody = strBody
'adicionar o arquivo selecionado como um anexo
.AddAttachment strFileToSend
End With
'para enviar o e-mail
gMail.Send
EnviarPasta = True
Exit Function
eh:
EnviarPasta = False
End Function
Se a porta de configuração 25 não funcionar, você poderá receber um erro – “The transport failed to connect to the server” (O transporte não conseguiu se conectar ao servidor )
A função acima pode ser chamada usando o procedimento abaixo
Sub EnviarEmail()
Dim strTo As String
Dim strSubject As String
Dim strBody As String
'Preencher Variaveis
strTo = "jon.smith@gmail.com"
strSubject = "Veja o arquivo financeiro em anexo"
strBody = "algum texto vai aqui para o corpo do e-mail"
'chamar a função para enviar o e-mail
If EnviarPasta(strTo, strSubject, , strBody) = true then
Msgbox "Sucesso na criação do e-mail"
Else
Msgbox "Falha na criação do e-mail!"
End if
End Sub
Você será solicitado a selecionar o arquivo que deseja enviar. Esse código é restrito a arquivos do Excel, pois o filtro é “*.csv; *.xls; *.xlsx; *.xlsm”; no entanto, você também pode usar esse código no Word e alterar o filtro de acordo.
Selecione o arquivo e clique em Abrir. O código pode demorar um pouco para ser executado – se o e-mail for enviado com êxito, você receberá a seguinte mensagem.