Atualizado por Brad Jones em 4 de julho de 2017.
Usar e-mails como parte de qualquer programa é uma boa maneira de automatizar tarefas importantes e também melhora significativamente o valor e a funcionalidade de qualquer programa ou script.
No passado, eu usei muito e-mail em meus trabalhos em lote e outros scripts automatizados, que foi descrito em artigos anteriores sobre o uso de ferramentas como Sendmail Enviar e-mails automatizados usando SendEmail e Windows Task Scheduler Enviar e-mails automatizados usando SendEmail e Windows Task Agendador Não importa qual seja o seu trabalho, geralmente todo mundo, em algum momento, tem que enviar um email a um chefe ou supervisor com relatórios de status diários, semanais ou mensais. Leia mais ou Blat para emitir e-mails diretamente da linha de comando Enviar facilmente e-mails de linha de comando com Blat Enviar facilmente e-mails de linha de comando com Blat Blat. Não é exatamente a palavra que você imagina que seria o nome de uma ferramenta que você pode usar para enviar e-mails para qualquer pessoa no mundo, de qualquer aplicativo ou ferramenta de software que você ... Read More, ou de dentro de um script de linha de comando.
Eles são ótimos para aqueles momentos em que você tem um script que monitora a integridade de um computador ou o status de um processo específico, mas e se você quiser automatizar o envio de emails de produtos do Microsoft Office como o Word ou o Excel?
Existem muitas razões pelas quais você pode querer fazê-lo. Talvez você tenha uma equipe que atualize documentos ou planilhas semanalmente, e gostaria de receber uma notificação por e-mail sobre quando essas atualizações ocorrem e até mesmo um relatório dos dados dessas planilhas. Existem algumas técnicas que você pode usar para programar e-mails automatizados a partir do Excel, mas o CDO (Collaboration Data Objects) continua sendo o meu favorito.
Enviando emails de dentro do Microsoft Excel
Você provavelmente está pensando que o script de saída de e-mail em um script Excel VBA será dolorosamente complicado. Bem, esse não é o caso.
O CDO é um componente de mensagens usado no Windows por algumas gerações do sistema operacional. Ela costumava ser chamada de CDONTS e, com o advento do Windows 2000 e XP, foi substituída por “CDO for Windows 2000”. Este componente já está incluído na instalação do VBA no Microsoft Word ou Excel e está pronto para uso.
Usar o componente faz com que o envio de emails a partir de produtos Windows com o VBA seja extremamente fácil. Neste exemplo, vou usar o componente CDO no Microsoft Excel para enviar um email que forneça os resultados de uma célula específica do Excel.
Criar uma macro VBA
O primeiro passo é ir para a guia Desenvolvedor do Excel.
Dentro da guia Desenvolvedor, clique em Inserir na caixa Controles e selecione um botão de comando.
Desenhe na folha e crie uma nova macro para ela.
Quando o Microsoft Excel abre o editor VBA, você precisará adicionar a referência à biblioteca CDO. Navegue para Ferramentas > Referências no editor.
Role a lista até encontrar o Microsoft CDO para Windows 2000 Library . Marque a caixa de seleção e clique em OK .
Configurar o CDO de e para campos
Agora você está pronto para usar o CDO para emitir emails de dentro do Microsoft Excel. Para fazer isso, primeiro você precisa criar os objetos de email e configurar todos os campos necessários para enviar o email. Tenha em mente que, embora muitos dos campos sejam opcionais, os campos De e Para são obrigatórios.
Dim CDO_Mail Como Objeto Dim CDO_Config Como Objeto Dim SMTP_Config Como Variante Dim strSubject como String Dim strFrom as String Dim strTo as String Dim strCc as String Dim strBcc as String str strBody As String strSubject = "Resultados da planilha do Excel" strFrom = "ryxxxxxx @ xxxxxcast .net "strTo =" [email protected] "strCc =" "strBcc =" "strBody =" Os resultados totais para este trimestre são: "& Str (Sheet1.Cells (2, 1))
O legal disso é que você pode criar qualquer string que você queira para personalizar uma mensagem de email completa e atribuí-la à variável strBody . Agrupe os componentes da mensagem usando a string & para inserir dados de qualquer uma das planilhas do Microsoft Excel diretamente na mensagem de e-mail, exatamente como mostrei acima.
Configurar o CDO para usar um SMTP externo
A próxima seção do código é onde você irá configurar o CDO para usar qualquer servidor SMTP externo que você deseja usar. Nesse caso, não preciso usar SSL porque meu servidor SMTP não exige isso. O CDO é capaz de SSL, mas está fora do escopo deste artigo. Se você precisar usar SSL, eu recomendo fortemente o artigo de Paul Sadowski sobre o uso do CDO.
Set CDO_Mail = CreateObject ("CDO.Message") no erro IrTo Conjunto de Error_Handling CDO_Config = CreateObject ("CDO.Configuration") CDO_Config.Load -1 Definir SMTP_Config = CDO_Config.Fields com SMTP_Config .Item ("http://schemas.microsoft .com / cdo / configuration / sendusing ") = 2 .Item (" http://schemas.microsoft.com/cdo/configuration/smtpserver ") =" smtp.gmail.com ".Item (" http: // esquemas http://schemas.microsoft.com/cdo/configuration/sendusername ") /schemas.microsoft.com/cdo/configuration/sendpassword ") =" password ".Item (" http://schemas.microsoft.com/cdo/configuration/smtpserverport ") = 25 .Item (" http: // schemas .microsoft.com / cdo / configuration / smtpusessl ") = Verdadeiro .Update End With With CDO_Mail Set .Configuração = CDO_Config Fim Com
Finalize a instalação do CDO
Agora que você configurou a conexão com o servidor SMTP para enviar o email, tudo o que você precisa fazer é preencher os campos apropriados para o objeto CDO_Mail e emitir o comando Enviar . Aqui está como você faz isso:
CDO_Mail.Subject = strSubject CDO_Mail.From = strFrom CDO_Mail.To = strTo CDO_Mail.TextBody = strBody CDO_Mail.CC = strCc CDO_Mail.BCC = strBcc CDO_Mail.Send Error_Handling: se Err.Description "" Then MsgBox Err.Description
Então você tem isso. Não haverá caixas de pop-up nem mensagens de alerta de segurança, o que pode acontecer quando você usa o objeto de email do Outlook. O CDO simplesmente reúne o email e utiliza os detalhes da conexão do servidor SMTP para disparar a mensagem. É provavelmente a maneira mais fácil de incorporar e-mails em scripts Microsoft Word ou Excel VBA.
Aqui está a mensagem que recebi na minha caixa de entrada:
Solução de problemas
Se você receber um erro que lê O transporte falhou ao conectar-se ao servidor, verifique se você digitou o nome de usuário, senha, servidor SMTP e número de porta corretos nas linhas de código listadas abaixo de SMTP_Config .
Automatizando o processo
É muito bom poder enviar informações do Microsoft Excel como um email com o toque de um botão. No entanto, você pode querer usar essa funcionalidade regularmente, e nesse caso faria sentido automatizar o processo 5 Recursos para Macros do Excel para Automatizar Suas Planilhas 5 Recursos para Macros do Excel para Automatizar Suas Planilhas Procurando por macros do Excel? Aqui estão cinco sites que têm o que você está procurando. Consulte Mais informação .
Para fazer isso, precisamos fazer uma alteração na macro que criamos. Vá para o Editor do Visual Basic e copie e passe a totalidade do código que criamos. Em seguida, selecione ThisWorkbook na hierarquia Project .
Copie e cole seu código no ThisWorkbook . Em seguida, substitua a primeira linha por Sub Workbook_Open () . Isso executará a macro sempre que você abrir o arquivo.
Em seguida, abra o Agendador de Tarefas . Vamos usar essa ferramenta para pedir ao Windows para abrir a planilha automaticamente em intervalos regulares, quando nossa macro será iniciada, enviando o email.
Selecione Criar Tarefa Básica ... no menu Ações e percorra o caminho até chegar na tela Ação . Selecione Iniciar um programa e clique em Avançar .
Use o botão Procurar para localizar o Microsoft Excel no seu computador ou copie e cole o caminho no campo Programa / script . Em seguida, insira o caminho para o documento do Microsoft Excel no campo Adicionar argumentos . Complete o assistente, e nosso agendamento deve estar no lugar. Vale a pena executar um teste agendando a ação Como esvaziar automaticamente a lixeira em um agendamento e liberar espaço desperdiçado Como esvaziar automaticamente a lixeira em um agendamento e liberar espaço desperdiçado Se você não esvaziar regularmente a Reciclagem Bin, pode estar desperdiçando gigabytes de espaço na sua unidade de dados. Mas agora o Windows 10 pode esvaziá-lo automaticamente em uma programação. Leia mais por alguns minutos no futuro e, em seguida, altere a tarefa assim que confirmar que está funcionando.
Talvez seja necessário ajustar as configurações da sua Central de Confiabilidade para garantir que a macro seja executada corretamente. Para fazer isso, abra a planilha e navegue até Arquivo > Opções > Central de Confiabilidade . A partir daqui, clique em Configurações da Central de Confiabilidade e, na tela seguinte, defina o disco de rádio como Nunca mostrar informações sobre conteúdo bloqueado .
Faça o Microsoft Excel funcionar para você
O Microsoft Excel é uma ferramenta incrivelmente poderosa, mas aprender como tirar o máximo proveito dela pode ser um pouco intimidante. Se você deseja realmente dominar o software, precisará se sentir confortável com o VBA O Tutorial de Programação do Excel VBA para Iniciantes O Tutorial de Programação do Excel VBA para Iniciantes O VBA é uma ferramenta avançada do Microsoft Office. Você pode usá-lo para automatizar tarefas com macros, definir acionadores e muito mais. Apresentaremos a programação básica visual do Excel com um projeto simples. Leia mais, e isso não é uma tarefa pequena.
No entanto, os resultados falam por si. Com uma pequena experiência em VBA, em breve você poderá fazer com que o Microsoft Excel execute tarefas básicas sem a sua supervisão, dando-lhe mais tempo para se concentrar em assuntos mais urgentes. Leva tempo para se familiarizar com o VBA, mas em breve você verá os frutos do seu trabalho se puder ficar com ele.
Você consegue pensar em algum uso legal para o CDO em seus próprios projetos do Microsoft Excel, Access ou Word? Compartilhe seus pensamentos e idéias na seção de comentários abaixo.