VBA – Enviar e-mails do Excel pelo Gmail

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on August 22, 2023

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.

selecionar ferramentas referencias

Procure a Referência do CDO da Microsoft e clique em OK.

selecionar microsoft cdo

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.

janela selecionar arquivo

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.

sucesso-criacao-email

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA