.
Importante: para aplicar o que ensinaremos neste artigo, é essencial que você possua uma conta de email configurada no Microsoft Outlook.
Enviar planilha por email – Simplificando
Um dos principais recursos da suite Office é a integração de seus programas, que é extremamente fácil e prática. Um dos recursos comuns é um aplicativo ter bibliotecas e funções quase “integradas” ao seu escopo para que possa tirar proveito de outros aplicativos. O excel tem diversos casos desse tipo, um desses vamos explicar hoje que é o envio de e-mail via VBA.
Simples envio do documento
No nosso exemplo abaixo, você tem uma planilha de finanças e deseja um botão para facilitar o envio da mesma por e-mail.
No modo de desenvolvedor criaremos a macro para enviar a planilha por email, para inserirmos o código utilize o atalho Alt + F11. Abrindo então o VBA, crie um novo módulo para inserir o código de envio de e-mail.
Podemos “debugar” a função utilizando a tecla F8 ou a tecla F5 para execução do código por inteiro. Após inserir o código na aba de desenvolvimento, podemos associar a execução da macro em um botão, facilitando assim a forma de chamada da mesma.
Com o botão já criado no excel, devemos associar a macro desejada:
Sub EnvioArquivo()
‘ Na linha de código, ele efetua o simples envio do arquivo por e-mail, utilizando uma função nativa já do excel, sem instanciar objetos externos
ActiveWorkbook.SendMail “SeuEmail@exemplo.com”,”Título do assunto”
End Sub
Como podemos ver abaixo, o arquivo foi enviado diretamente em anexo:
Utilizando o Outlook
Como falamos no inicio do artigo, algo que sempre devemos pensar é tirar vantagem de tudo que a suite Office tem para nos oferecer, evitando assim horas de desenvolvimento e gerando uma economia de tempo.
Com isso chegamos na situação de que, podemos customizar o nossa macro de envio de planilha por e-mail por completo:
Sub ArquivoAnexo()
‘No exemplo abaixo, ele efetua o envio da ultima versão salva da planilha
Dim OutApp As Object
Dim OutMail As Object
‘Nesse trecho de código, instanciamos um objeto referente ao outlook, como pré-requisito, devemos ter uma conta valida associada para que o exemplo funcione. Possivelmente temos de ter tambem acesso de administrador, para executar a chamada para outra aplicação
Set OutApp = CreateObject(“Outlook.Application”)
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
‘Campo de destinatario
.to = “SeuEmail@exemplo.com”
‘Com cópia
.CC = “”
‘Cópia oculta
.BCC = “”
.Subject = “Controle Financeiro Vol 2”
.Body = “Controle financeiro Vol 2”
.Attachments.Add ActiveWorkbook.FullName
.Display ‘Podemos tambem usar .Send para enviar direto
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Enviando intervalo de células no Corpo do Email
Caso você não esteja interessado em enviar a planilha anexada como ensinamos acima, você também tem a opção de enviar as células que desejar diretamente no corpo do email, para isso basta utilizar apenas o seguinte código:
Sub enviar_corpo_email()
‘ Seleciona o intervalo de células a serem enviadas por email.
ActiveSheet.Range(“A1:B12”).Select
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
.Introduction = “”
.Item.To = “seuEmail@exemplo.com”
.Item.Subject = “Título Assunto”
.Item.Send
End With
End Sub
E é claro, substituíndo “SeuEmail@exemplo.com” pelo endereço de email para o qual o Excel deve enviar (Mantenha as aspas) e também o “Título Assunto”.
Observe que na terceira linha do código você pode determinar qual a range (Intervalo de células) você quer enviar, muito simples!
Espero ter ajudado, qualquer dúvida poste abaixo nos comentários ou contate-nos pela guia contato logo acima.
Clique Aqui para baixar a planilha com os exemplos vistos neste artigo.
Até o próximo!