Aktualisiert von Brad Jones am 4. Juli 2017.
Die Verwendung von E-Mails als Teil eines Programms ist eine gute Möglichkeit, wichtige Aufgaben zu automatisieren. Außerdem werden der Wert und die Funktionalität jedes Programms oder Skripts erheblich verbessert.
In der Vergangenheit habe ich viel E-Mail in meinen Batch-Jobs und anderen automatisierten Skripten verwendet, die in früheren Artikeln zur Verwendung von Tools wie Sendmail beschrieben wurden. Senden von automatisierten E-Mails mit SendEmail & Windows Task Scheduler Senden von automatisierten E-Mails mit SendEmail & Windows Task Scheduler Egal, was dein Job ist, normalerweise muss jeder irgendwann einen Boss oder Supervisor mit täglichen, wöchentlichen oder monatlichen Statusberichten kontaktieren. Lesen Sie mehr oder Blat, um E-Mails direkt von der Befehlszeile aus zu senden Einfaches Senden von Befehlszeilen-E-Mails mit Blat Senden Sie einfach Befehlszeilen-E-Mails mit Blat Blat. Nicht genau das Wort, das Sie sich vorstellen, wäre der Name eines Tools, mit dem Sie E-Mails an jeden auf der Welt senden können, von jeder Anwendung oder jedem Softwaretool, das Sie ... Read More oder aus einem Befehlszeilenskript erhalten.
Diese sind ideal für Zeiten, in denen Sie ein Skript haben, das den Zustand eines Computers oder den Status eines bestimmten Prozesses überwacht. Was aber, wenn Sie das Senden von E-Mails aus Microsoft Office-Produkten wie Word oder Excel automatisieren möchten?
Es gibt viele Gründe, warum Sie dies tun sollten. Vielleicht haben Sie Mitarbeiter, die wöchentlich Dokumente oder Tabellen aktualisieren, und Sie möchten per E-Mail benachrichtigt werden, wann diese Updates stattfinden und sogar einen Bericht über die Daten in diesen Tabellen. Es gibt ein paar Techniken, mit denen Sie automatisierte E-Mails aus Excel programmieren können, aber Collaboration Data Objects (CDO) bleibt mein Favorit.
Senden von E-Mails aus Microsoft Excel
Sie denken wahrscheinlich, dass das Schreiben von ausgehenden E-Mails in ein Excel-VBA-Skript mühsam kompliziert wird. Nun, das ist überhaupt nicht der Fall.
CDO ist eine Messaging-Komponente, die in Windows für einige Generationen des Betriebssystems verwendet wird. Früher hieß es CDONTS, dann wurde es mit dem Erscheinen von Windows 2000 und XP durch "CDO for Windows 2000" ersetzt. Diese Komponente ist bereits in Ihrer VBA-Installation in Microsoft Word oder Excel enthalten und kann sofort verwendet werden.
Die Verwendung der Komponente macht das Senden von E-Mails von Windows-Produkten mit VBA extrem einfach. In diesem Beispiel werde ich die CDO-Komponente in Microsoft Excel verwenden, um eine E-Mail zu senden, die die Ergebnisse einer bestimmten Excel-Zelle liefert.
Erstellen Sie ein VBA-Makro
Der erste Schritt besteht darin, zur Registerkarte "Excel- Entwickler" zu wechseln.
Klicken Sie auf der Registerkarte Entwickler auf Einfügen im Feld Steuerelemente, und wählen Sie eine Befehlsschaltfläche aus.
Zeichnen Sie es in das Blatt und erstellen Sie ein neues Makro dafür.
Wenn Microsoft Excel den VBA-Editor öffnet, müssen Sie den Verweis auf die CDO-Bibliothek hinzufügen. Navigieren Sie im Editor zu Extras > Referenzen .
Scrollen Sie in der Liste nach unten, bis Sie Microsoft CDO für Windows 2000-Bibliothek finden . Markieren Sie das Kontrollkästchen und klicken Sie auf OK .
Richten Sie die Felder CDO From und To ein
Jetzt können Sie CDO verwenden, um E-Mails aus Microsoft Excel heraus zu versenden. Dazu müssen Sie zuerst die Mail-Objekte erstellen und alle Felder einrichten, die zum Senden der E-Mail erforderlich sind. Beachten Sie, dass viele der Felder optional sind, die Felder Von und Bis sind jedoch erforderlich.
Dim CDO_Mail als Objekt Dim CDO_Config als Objekt Dim SMTP_Config als Variant Dim strSubject als String Dim strFrom als String Dim strTo als String Dim strCc als String Dim strBcc als String Dim strBody Als String strSubject = "Ergebnisse aus Excel Spreadsheet" strFrom = "ryxxxxxx @ xxxxxcast .net "strTo =" [email protected] "strCc =" "strBcc =" "strBody =" Die Gesamtergebnisse für dieses Quartal sind: "& Str (Sheet1.Cells (2, 1))
Das Tolle daran ist, dass Sie eine beliebige Zeichenfolge erstellen können, um eine vollständige E-Mail-Nachricht anzupassen und sie der Variablen strBody zuzuweisen. Fügen Sie die Nachrichtentexte zusammen, indem Sie die Zeichenfolge & verwenden, um Daten aus einer Microsoft Excel-Tabelle direkt in die E-Mail-Nachricht einzufügen, wie oben gezeigt.
Konfigurieren Sie CDO für Verwendung eines externen SMTP
Im nächsten Codeabschnitt konfigurieren Sie CDO für die Verwendung eines beliebigen externen SMTP-Servers, den Sie verwenden möchten. In diesem Fall muss ich SSL nicht verwenden, da mein SMTP-Server dies nicht benötigt. CDO ist SSL-fähig, aber das ist außerhalb des Geltungsbereichs dieses Artikels. Wenn Sie SSL verwenden müssen, empfehle ich Ihnen Paul Sadowskis beeindruckende Beschreibung der Verwendung von CDO.
Set CDO_Mail = CreateObject ("CDO.Message") Bei Fehler GoTo Error_Handling Setzen CDO_Config = CreateObject ("CDO.Configuration") CDO_Config.Load -1 Setzen Sie SMTP_Config = CDO_Config.Fields mit SMTP_Config.Item ("http://schemas.microsoft .com / cdo / configuration / sendusing ") = 2 .Item (" http://schemas.microsoft.com/cdo/configuration/smtpserver ") =" smtp.gmail.com ".Item (" http: // schemes .microsoft.com / cdo / configuration / smtpauthenticate ") = 1 .Item (" http://schemas.microsoft.com/cdo/configuration/sendusername ") =" [email protected] ".Item (" http: / /schemas.microsoft.com/cdo/configuration/sendpassword ") =" password ".Item (" http://schemas.microsoft.com/cdo/configuration/smtpserverport ") = 25 .Item (" http: // schemes .microsoft.com / cdo / configuration / smtpusessl ") = True .Update Ende mit With With CDO_Mail Set .Configuration = CDO_Config Ende mit
Finalisieren Sie das CDO-Setup
Nachdem Sie die Verbindung zum SMTP-Server für das Senden der E-Mail konfiguriert haben, müssen Sie nur noch die entsprechenden Felder für das CDO_Mail-Objekt ausfüllen und den Befehl " Senden" eingeben . Hier ist, wie Sie das tun:
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: Wenn Err.Description "" Dann MsgBox Err.Description
So, da hast du es. Es werden keine Popup-Felder oder Sicherheitswarnmeldungen angezeigt, die auftreten können, wenn Sie das Outlook-Mail-Objekt verwenden. CDO stellt einfach die E-Mail zusammen und verwendet Ihre SMTP-Server-Verbindungsdetails, um die Nachricht auszulösen. Es ist wahrscheinlich der einfachste Weg, um E-Mails in Microsoft Word oder Excel VBA-Skripte einzubinden.
So sieht die Nachricht aus, die ich in meinem Posteingang erhalten habe:
Fehlerbehebung
Wenn Sie einen Fehler erhalten, der besagt, dass der Transport fehlgeschlagen ist, um eine Verbindung mit dem Server herzustellen, vergewissern Sie sich, dass Sie den korrekten Benutzernamen, das Kennwort, den SMTP-Server und die Portnummer in den darunter liegenden Codezeilen mit SMTP_Config eingegeben haben .
Automatisieren des Prozesses
Es ist gut und schön, per Knopfdruck Informationen aus Microsoft Excel als E-Mail versenden zu können. Sie sollten diese Funktion jedoch regelmäßig verwenden. In diesem Fall wäre es sinnvoll, den Prozess zu automatisieren. 5 Ressourcen für Excel-Makros zur Automatisierung Ihrer Tabellen 5 Ressourcen für Excel Makros zur Automatisierung Ihrer Tabellenkalkulation Suche nach Excel-Makros? Hier sind fünf Seiten, die haben, wonach Sie suchen. Weiterlesen .
Um dies zu tun, müssen wir das Makro, das wir erstellt haben, ändern. Wechseln Sie zum Visual Basic-Editor, kopieren Sie den gesamten Code, den wir zusammengestellt haben, und geben Sie ihn wieder. Als nächstes wählen Sie ThisWorkbook aus der Projekthierarchie .
Kopieren Sie den Code und fügen Sie ihn in ThisWorkbook ein . Ersetzen Sie dann die erste Zeile durch Sub Workbook_Open () . Dadurch wird das Makro beim Öffnen der Datei ausgeführt.
Als nächstes öffnen Sie den Taskplaner . Wir werden dieses Tool verwenden, um Windows zu bitten, die Tabelle automatisch in regelmäßigen Abständen zu öffnen. An diesem Punkt wird unser Makro initiiert und die E-Mail gesendet.
Wählen Sie Create Basic Task ... aus dem Menü Aktionen und gehen Sie durch den Assistenten, bis Sie den Aktionsbildschirm erreichen. Wählen Sie Programm starten und klicken Sie auf Weiter .
Verwenden Sie die Schaltfläche Durchsuchen, um den Microsoft Excel-Speicherort auf Ihrem Computer zu finden, oder kopieren Sie den Pfad und fügen Sie ihn in das Feld Programm / Skript ein. Geben Sie dann den Pfad zu Ihrem Microsoft Excel-Dokument in das Feld Argumente hinzufügen ein. Schließen Sie den Assistenten ab und unsere Planung sollte abgeschlossen sein. Es lohnt sich, einen Test auszuführen, indem Sie die Aktion Planen des Papierkorbs für einen Zeitplan und Freigeben von ungenutztem Speicherplatz planen So leeren Sie den Papierkorb automatisch für einen Zeitplan und geben Sie überschüssigen Speicherplatz frei Wenn Sie den Papierkorb nicht regelmäßig leeren Bin, es könnte Gigabytes Speicherplatz auf Ihrem Datenlaufwerk verschwenden. Aber jetzt kann Windows 10 es nach einem Zeitplan automatisch leeren. Lesen Sie in der Zukunft ein paar Minuten mehr, und ändern Sie dann die Aufgabe, sobald Sie bestätigen können, dass sie funktioniert.
Möglicherweise müssen Sie Ihre Einstellungen für das Sicherheitscenter anpassen, um sicherzustellen, dass das Makro ordnungsgemäß ausgeführt wird. Öffnen Sie dazu die Tabelle und navigieren Sie zu Datei > Optionen > Vertrauensstellungscenter . Klicken Sie hier auf Einstellungen für das Sicherheitscenter, und stellen Sie auf dem nächsten Bildschirm das Funkwahlfeld auf Nie Informationen zu gesperrten Inhalten anzeigen ein .
Machen Sie Microsoft Excel für Sie arbeiten
Microsoft Excel ist ein unglaublich leistungsfähiges Werkzeug, aber zu lernen, wie man das Beste daraus macht, kann ein wenig einschüchternd sein. Wenn Sie die Software wirklich beherrschen möchten, müssen Sie mit VBA vertraut sein. Das Excel-VBA-Programmier-Tutorial für Anfänger Das Excel-VBA-Programmier-Tutorial für Anfänger VBA ist ein Microsoft Office-Tool. Sie können damit Aufgaben mit Makros automatisieren, Trigger setzen und vieles mehr. Wir stellen Ihnen die visuelle Grundprogrammierung von Excel mit einem einfachen Projekt vor. Lesen Sie mehr, und das ist keine kleine Aufgabe.
Die Ergebnisse sprechen jedoch für sich. Mit ein wenig VBA-Erfahrung werden Sie in der Lage sein, Microsoft Excel in die Lage zu versetzen, grundlegende Aufgaben ohne Ihre Aufsicht zu erledigen, wodurch Sie mehr Zeit haben, sich auf dringlichere Angelegenheiten zu konzentrieren. Es braucht Zeit, um sich mit VBA vertraut zu machen, aber Sie werden bald die Früchte Ihrer Arbeit sehen, wenn Sie dabei bleiben können.
Kannst du coole Anwendungen für CDO in deinen eigenen Microsoft Excel-, Access- oder Word-Projekten entwickeln? Teilen Sie Ihre Gedanken und Ideen in den Kommentaren unten.