Comment envoyer des courriels à partir d'une feuille de calcul Excel à l'aide de scripts VBA

Nous vous montrerons comment configurer des courriels automatisés à partir d'Excel à l'aide des scripts Collaboration Data Objects (CDO) et VBA. Nos modèles de code rendent cela beaucoup plus facile que ça en al'air!

Nous vous montrerons comment configurer des courriels automatisés à partir d'Excel à l'aide des scripts Collaboration Data Objects (CDO) et VBA.  Nos modèles de code rendent cela beaucoup plus facile que ça en al'air!
Publicité

Mis à jour par Brad Jones le 4 juillet 2017.

L'utilisation de courriels dans le cadre de n'importe quel programme est un bon moyen d'automatiser des tâches importantes, et améliore considérablement la valeur et la fonctionnalité de n'importe quel programme ou script.

Par le passé, j'ai beaucoup utilisé le courrier électronique dans mes travaux par lots et d'autres scripts automatisés, décrits dans les articles précédents sur l'utilisation d'outils tels que Sendmail. Envoyer des e-mails automatisés avec SendEmail & Windows Planificateur de tâches Envoyer des emails automatisés avec SendEmail & Windows Planificateur Quel que soit votre travail, généralement tout le monde à un moment donné doit envoyer un courriel à un patron ou un superviseur avec des rapports d'état quotidiens, hebdomadaires ou mensuels. En savoir plus ou Blat pour émettre des courriels directement à partir de la ligne de commande Envoyez facilement des courriels de ligne de commande avec Blat Envoyez facilement des courriels de ligne de commande avec Blat Blat. Pas exactement le mot que vous envisagez serait le nom d'un outil que vous pouvez utiliser pour envoyer des courriels à n'importe qui dans le monde, à partir de n'importe quelle application ou logiciel que vous ... Lire la suite, ou à partir d'un script de ligne de commande.

Ils sont parfaits lorsque vous avez un script qui surveille la santé d'un ordinateur ou l'état d'un processus spécifique, mais que se passe-t-il si vous souhaitez automatiser l'envoi d'e-mails à partir de produits Microsoft Office comme Word ou Excel?

Il y a beaucoup de raisons pour lesquelles vous pourriez vouloir le faire. Vous avez peut-être un personnel qui met à jour les documents ou les feuilles de calcul chaque semaine, et vous souhaitez recevoir une notification par courrier électronique indiquant quand ces mises à jour ont eu lieu, et même un rapport des données contenues dans ces feuilles. Il existe quelques techniques que vous pouvez utiliser pour programmer des emails automatisés à partir d'Excel, mais Collaboration Data Objects (CDO) reste mon préféré.

Envoyer des courriels à partir de Microsoft Excel

Vous pensez probablement que le script de courrier sortant dans un script VBA Excel va être douloureusement compliqué. Eh bien, ce n'est pas du tout le cas.

CDO est un composant de messagerie utilisé dans Windows pour quelques générations du système d'exploitation. Il était appelé CDONTS, puis avec l'avènement de Windows 2000 et XP, il a été remplacé par "CDO pour Windows 2000". Ce composant est déjà inclus dans votre installation VBA dans Microsoft Word ou Excel et il est prêt à l'emploi.

L'utilisation de ce composant rend extrêmement facile l'envoi d'e-mails à partir de produits Windows avec VBA. Dans cet exemple, je vais utiliser le composant CDO dans Microsoft Excel pour envoyer un courrier électronique qui fournira les résultats d'une cellule Excel spécifique.

Créer une macro VBA

La première étape consiste à accéder à l'onglet Développeur Excel.

Dans l'onglet Développeur, cliquez sur Insérer dans la zone Commandes, puis sélectionnez un bouton de commande.

Comment envoyer des courriels à partir d'une feuille de calcul Excel à l'aide de scripts VBA Sans titre

Dessinez-le dans la feuille, puis créez une nouvelle macro pour cela.

Comment envoyer des e-mails à partir d'une feuille de calcul Excel à l'aide de scripts VBA créer une macro

Lorsque Microsoft Excel ouvre l'éditeur VBA, vous devrez ajouter la référence à la bibliothèque CDO. Accédez à Outils > Références dans l'éditeur.

Comment envoyer des e-mails à partir d'une feuille de calcul Excel à l'aide des références de scripts VBA

Faites défiler la liste jusqu'à ce que vous trouviez Microsoft CDO pour Windows 2000 Library . Cochez la case et cliquez sur OK .

Comment envoyer des e-mails à partir d'une feuille de calcul Excel à l'aide de scripts VBA Microsoft cdo

Configurer le CDO de et vers les champs

Vous êtes maintenant prêt à utiliser CDO pour envoyer des courriels depuis Microsoft Excel. Pour ce faire, vous devez d'abord créer les objets de messagerie et configurer tous les champs nécessaires pour envoyer l'e-mail. Gardez à l'esprit que bien que de nombreux champs soient facultatifs, les champs De et À sont obligatoires.

 Dim CDO_Mail comme objet Dim CDO_Config comme objet Dim SMTP_Config comme variante Dim strSubject comme chaîne Dim strFrom comme chaîne Dim strTo comme chaîne Dim strCc comme chaîne Dim strBcc comme chaîne Dim strBcc comme chaîne strSubject = .net "strTo =" [email protected] "strCc =" "strBcc =" "strBody =" Les résultats totaux pour ce trimestre sont: "& Str (Sheet1.Cells (2, 1)) 

Ce qui est génial à ce propos, c'est que vous pouvez créer n'importe quelle chaîne que vous voulez personnaliser un email complet et l'assigner à la variable strBody . Composer ensemble les composants du message en utilisant le & string pour insérer des données de l'une des feuilles de Microsoft Excel directement dans le message électronique, comme je l'ai montré ci-dessus.

Configurer CDO pour utiliser un SMTP externe

La section suivante de code est où vous allez configurer CDO pour utiliser n'importe quel serveur SMTP externe que vous souhaitez utiliser. Dans ce cas, je n'ai pas besoin d'utiliser SSL car mon serveur SMTP ne l'exige pas. CDO est capable de SSL, mais cela sort du cadre de cet article. Si vous avez besoin d'utiliser le protocole SSL, je vous recommande vivement l'excellent travail de Paul Sadowski sur l'utilisation de CDO.

 Définir CDO_Mail = CreateObject ("CDO.Message") En cas d'erreur GoTo Error_Handling Définir CDO_Config = CreateObject ("CDO.Configuration") CDO_Config.Load -1 Définir SMTP_Config = CDO_Config.Fields avec SMTP_Config .Item ("http://schemas.microsoft .com / cdo / configuration / sendusing ") = 2 .Item (" http://schemas.microsoft.com/cdo/configuration/smtpserver ") =" smtp.gmail.com ".Item (" http: // schémas .microsoft.com / cdo / configuration / smtpauthenticate ") = 1 .Item (" http://schemas.microsoft.com/cdo/configuration/sendusername ") =" [email protected] ".Item (" http: / /schemas.microsoft.com/cdo/configuration/sendpassword ") =" mot de passe ".Item (" http://schemas.microsoft.com/cdo/configuration/smtpserverport ") = 25 .Item (" http: // schémas .microsoft.com / cdo / configuration / smtpusessl ") = True. Mettre à jour avec CDO_Mail Set .Configuration = CDO_Config se termine par 

Finaliser l'installation CDO

Maintenant que vous avez configuré la connexion au serveur SMTP pour l'envoi de l'e-mail, il vous suffit de remplir les champs appropriés pour l' objet CDO_Mail et d' exécuter la commande Envoyer . Voici comment vous faites cela:

 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: si Err.Description "" puis MsgBox Err.Description 

Donc là vous l'avez. Il n'y aura pas de boîtes de pop-up ou de messages d'alerte de sécurité, ce qui peut arriver lorsque vous utilisez l'objet mail Outlook. CDO rassemble simplement le courrier électronique et utilise les détails de votre connexion au serveur SMTP pour déclencher le message. C'est probablement la manière la plus simple que je connaisse d'intégrer le courrier électronique dans des scripts Microsoft Word ou Excel VBA.

Voici à quoi ressemblait le message que j'ai reçu dans ma boîte de réception:

Comment envoyer des e-mails à partir d'une feuille de calcul Excel à l'aide de scripts VBA de travail e-mail

Dépannage

Si vous recevez une erreur indiquant que le transport n'a pas pu se connecter au serveur, vérifiez que vous avez entré le nom d'utilisateur, le mot de passe, le serveur SMTP et le numéro de port corrects dans les lignes de code répertoriées sous SMTP_Config .

Automatiser le processus

C'est très bien de pouvoir envoyer des informations de Microsoft Excel en tant qu'e-mail sur simple pression d'un bouton. Cependant, vous pouvez utiliser cette fonctionnalité régulièrement, auquel cas il serait judicieux d'automatiser le processus. 5 Ressources pour les macros Excel pour automatiser vos feuilles de calcul 5 Ressources pour les macros Excel pour automatiser vos feuilles de calcul Recherche de macros Excel? Voici cinq sites qui ont ce que vous cherchez. Lire la suite .

Pour ce faire, nous devrons modifier la macro que nous avons créée. Dirigez-vous vers Visual Basic Editor et copiez et collez l'intégralité du code que nous avons mis ensemble. Ensuite, sélectionnez ThisWorkbook dans la hiérarchie du projet .

Comment envoyer des e-mails à partir d'une feuille de calcul Excel à l'aide de scripts VBA thisworkbook

Copiez et collez votre code dans ThisWorkbook . Ensuite, remplacez la première ligne par Sub Workbook_Open () . Cela exécutera la macro chaque fois que vous ouvrez le fichier.

Comment envoyer des e-mails à partir d'une feuille de calcul Excel à l'aide du classeur VBA Scripts ouvert

Ensuite, ouvrez le planificateur de tâches . Nous allons utiliser cet outil pour demander à Windows d'ouvrir automatiquement la feuille de calcul à intervalles réguliers, à quel point notre macro sera lancée, envoyant l'email.

Comment envoyer des e-mails à partir d'une feuille de calcul Excel à l'aide de scripts VBA créer une tâche de base

Sélectionnez Créer une tâche de base ... dans le menu Actions et parcourez l'assistant jusqu'à atteindre l'écran Action . Sélectionnez Démarrer un programme et cliquez sur Suivant .

Comment envoyer des e-mails à partir d'une feuille de calcul Excel à l'aide de scripts VBA ajouter des arguments

Utilisez le bouton Parcourir pour rechercher l'emplacement de Microsoft Excel sur votre ordinateur ou copiez et collez le chemin dans le champ Programme / script . Ensuite, entrez le chemin d'accès à votre document Microsoft Excel dans le champ Ajouter des arguments . Terminez l'assistant et notre planification devrait être en place. Cela vaut la peine d'exécuter un test en programmant l'action Comment vider automatiquement la corbeille dans un planning et libérer de l'espace gaspillé Comment faire pour vider automatiquement la corbeille dans un planning et libérer de l'espace gaspillé Si vous ne videz pas régulièrement la corbeille Bin, il pourrait être gaspiller des gigaoctets d'espace sur votre disque de données. Mais maintenant Windows 10 peut le vider automatiquement sur un calendrier. Lire la suite pour quelques minutes à l'avenir, puis modifier la tâche une fois que vous pouvez confirmer que cela fonctionne.

Vous devrez peut-être ajuster les paramètres de votre Centre de gestion de la confidentialité pour vous assurer que la macro s'exécute correctement. Pour ce faire, ouvrez la feuille de calcul et accédez à Fichier > Options > Centre de gestion de la confidentialité . À partir de là, cliquez sur Paramètres du Centre de gestion de la confidentialité . Sur l'écran suivant, réglez la radio sur Ne jamais afficher d'informations sur le contenu bloqué .

Faites travailler Microsoft Excel pour vous

Microsoft Excel est un outil incroyablement puissant, mais apprendre à en tirer le meilleur parti peut être un peu intimidant. Si vous voulez vraiment maîtriser le logiciel, vous devez être à l'aise avec VBA Le tutoriel de programmation Excel VBA pour les débutants Le tutoriel de programmation VBA Excel pour les débutants VBA est un outil électrique Microsoft Office. Vous pouvez l'utiliser pour automatiser des tâches avec des macros, définir des déclencheurs et bien plus encore. Nous vous présenterons la programmation visuelle de base d'Excel avec un projet simple. Lire la suite, et ce n'est pas une mince tâche.

Cependant, les résultats parlent d'eux-mêmes. Avec une petite expérience VBA à votre actif, vous serez bientôt en mesure de faire de Microsoft Excel des tâches de base sans votre supervision, vous donnant plus de temps pour vous concentrer sur des sujets plus urgents. Il faut du temps pour se familiariser avec VBA, mais vous verrez bientôt les fruits de vos travaux si vous pouvez vous y tenir.

Pouvez-vous imaginer des utilisations intéressantes de CDO dans vos propres projets Microsoft Excel, Access ou Word? Partagez vos pensées et vos idées dans la section des commentaires ci-dessous.

In this article