Vou mostrar uma macro para enviar suas planilhas por email diretamente pelo Excel. Então você poderia me dizer: “Ah!!! Mas o Excel já me permite fazer isso através do menu Arquivo > Enviar para…“. E eu lhe digo: “Com toda razão, meu caro!”. Mas diga-me, se por um acaso, você desejasse enviar apenas uma planilha da sua pasta de trabalho, o que você faria? Copiaria essa planilha em um novo arquivo, salvaria este novo arquivo, para só depois enviá-lo. Estou certo?! Então. Esse é só um dos casos que esta macro lhe ajudaria.
Essa rotina que irei descrever pode ser adaptada para diversas situações. Você, como programador, entenderá o seu funcionamento e saberá ajustá-la para a sua necessidade, de acordo com o seu projeto. Seja para enviar automaticamente ao concluir alguma etapa do seu programa, seja para enviar planilhas seletivamente, para enviar para destinatários já cadastrados em algum banco de dados, enfim, use sua criatividade e obtenha os mais fantásticos resultados.
Primeiro, crie um módulo global para escrever a rotina de envio de emails. Vamos chamá-la deEnviarEmail.
2 | ActiveWorkbook.SendMail "email_do_destinatário@email.com" , "Título do Email" |
O código acima dispensa maiores explicações. Ele serve para enviar todo o arquivo (pasta de trabalho) por email.
A partir dele você pode começar a se divertir, adicionando modificações que atenderão ao seu projeto, em particular. Suponha que sua necessidade seja de enviar apenas uma planilha específica dentre as inúmeras planilhas que você possui no seu arquivo. Você pode fazer assim:
01 | Sub EnviarEmailPlanilhaEspecifica() |
02 | Dim NovoArquivoXLS As Workbook |
03 | Dim sPlanAEnviar As String |
04 | Dim sExcluirAnexoTemporario As String |
07 | sPlanAEnviar = "Plan2" |
10 | Set NovoArquivoXLS = Application.Workbooks.Add |
13 | ThisWorkbook.Sheets(sPlanAEnviar).Copy Before:=NovoArquivoXLS.Sheets(1) |
16 | NovoArquivoXLS.SaveAs ThisWorkbook.Path & "\" & sPlanAEnviar & " .xls" |
17 | sExcluirAnexoTemporario = NovoArquivoXLS.FullName |
20 | NovoArquivoXLS.SendMail "email_do_destinatário@email.com" , "Título do Email" |
26 | Kill sExcluirAnexoTemporario |
Esta macro salvará em um novo arquivo excel somente a planilha informada e a enviará por email.
Espero que gostem.
Abraços.
Este é o cara!!!
ResponderExcluirBom blog, xou de bola...
Só não está melhor que o jogo da Argentina x Nigéria, 3x2 neste momento, rs.
ThisWorkbook.Sheets(sPlanAEnviar).Copy Before:=NovoArquivoXLS.Sheets(1). Ta dando erro nessa linha, alguem sabe me dizer por que?
ResponderExcluirmuito bom mesmo resolveu uma parte de meu problema.
ResponderExcluirComo eu posso mandar texto no corpo do e-mail? neste código