Ein Benutzer fragte wie man jedes Mal eine automatische E-Mail senden kann, wenn man Outlook öffnet. Der Grund dafür ist ebenso humorvoll wie einzigartig: Er möchte seinen Freunden mitteilen, dass er noch am Leben ist, denn wie er scherzhaft anmerkt, „nichts beweist mehr, dass man noch am Leben ist, als Outlook zu öffnen und E-Mails zu checken.“ Während die Idee zunächst zum Schmunzeln anregt, spiegelt sie auch ein breiteres Interesse wider, das viele Menschen haben, insbesondere wenn es darum geht, regelmäßige Lebenszeichen an Familie und Freunde zu senden. Dieses Bedürfnis kann besonders bei älteren Menschen oder in einer Zeit, in der viele remote arbeiten und weniger persönlichen Kontakt haben, von Bedeutung sein. Im Folgenden werden wir einen Ansatz vorstellen, wie Sie mithilfe von VBA in Outlook ein solches Makro implementieren können, das beim Start der Anwendung eine Nachricht versendet.
Lösungsansatz
- Speichern des Sendungszeitpunkts: Nach dem Versenden der E-Mail wird der Zeitpunkt in der Windows-Registrierung gespeichert.
- Prüfung des Zeitpunkts beim Startup: Beim Start von Outlook wird das gespeicherte Datum mit dem aktuellen Datum verglichen. Eine neue E-Mail wird nur dann versendet, wenn das gespeicherte Datum nicht heute ist.
VBA-Code für das Makro
Private Sub Application_Startup()
Const registryKey As String = "HKEY_CURRENT_USER\Software\MeineOutlookApp\LastSent"
Dim OutApp As Object
Dim OutMail As Object
Dim lastSent As Date
Dim today As Date
Dim mailRecipient As String
Dim mailSubject As String
Dim mailBody As String
' Aktuelles Datum
today = Date
' Letztes Sendungsdatum aus der Registrierung holen
lastSent = CDate(GetSetting("MeineOutlookApp", "Einstellungen", "LastSent", "01.01.2000"))
' Prüfen, ob die letzte Nachricht bereits heute gesendet wurde
If lastSent < today Then
' E-Mail-Details definieren
mailRecipient = "freunde@example.com"
mailSubject = "Lebenszeichen von Outlook"
mailBody = "Hallo zusammen, ich bin noch am Leben und habe gerade mein Outlook geöffnet!"
' Erstellen und Senden der E-Mail
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = mailRecipient
.Subject = mailSubject
.Body = mailBody
.Send ' Oder .Display zum manuellen Senden
End With
' Datum des Sendens in der Registrierung speichern
SaveSetting "MeineOutlookApp", "Einstellungen", "LastSent", CStr(today)
End If
' Bereinigung
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Schritte zur Implementierung
- Folgen Sie den vorherigen Schritten, um den VBA-Editor zu öffnen und den Code einzufügen.
- Passen Sie die Empfängeradresse und ggf. die Nachrichtenanpassungen an Ihre Bedürfnisse an.
- Aktivieren Sie Makros und testen Sie die Funktionalität durch Neustarten von Outlook.
Hinweise zur Nutzung der Registrierung
Das Speichern von Daten in der Windows-Registrierung ist eine effektive Methode, um Zustände über die Laufzeit einer Anwendung hinaus zu speichern. Jedoch sollten Sie darauf achten, dass der Zugriff auf die Registrierung korrekt und sicher gestaltet wird und keine sensiblen Informationen ungeschützt gespeichert werden.
Mit diesem Ansatz wird das Problem übermäßiger Nachrichten vermieden, indem sichergestellt wird, dass Nachrichten nur einmal pro Tag oder nach Ihrem definierten Zeitraum gesendet werden.
Verwendung einer Vorlage in Outlook mit VBA
Um längere und komplexere Nachrichten effizient zu verwalten, bietet sich die Verwendung einer E-Mail-Vorlage in Outlook an. Eine Vorlage kann vorab mit Empfängeradresse(n), Betreff und Nachrichtentext erstellt und gespeichert werden. Das VBA-Makro öffnet dann einfach diese Vorlage, fügt eventuell zusätzliche Daten hinzu und sendet sie.
Schritte zum Erstellen einer E-Mail-Vorlage in Outlook
- Erstellen Sie eine neue E-Mail.
- Füllen Sie die E-Mail mit dem gewünschten Betreff, Empfänger und Nachrichtentext.
- Speichern Sie die E-Mail als Vorlage:
- Wählen Sie im Menü Datei > Speichern unter.
- Wählen Sie im Dropdown-Menü für den Dateityp die Option Outlook-Vorlage (.oft).
- Geben Sie der Vorlage einen Namen und speichern Sie sie in einem bekannten Verzeichnis.
VBA-Code zur Verwendung der Vorlage
Im Folgenden finden Sie den VBA-Code, der die Vorlage öffnet, optional anpasst und dann versendet. Der Code setzt voraus, dass die Vorlage bereits Empfänger und Betreff enthält.
Private Sub Application_Startup()
Const registryKey As String = "HKEY_CURRENT_USER\Software\MeineOutlookApp\LastSent"
Dim OutApp As Object
Dim OutMail As Object
Dim lastSent As Date
Dim today As Date
Dim templatePath As String
' Pfad zur Vorlage
templatePath = "C:\Pfad\Zur\Vorlage.oft" ' Anpassen an den Speicherort Ihrer Vorlage
' Aktuelles Datum
today = Date
' Letztes Sendungsdatum aus der Registrierung holen
lastSent = CDate(GetSetting("MeineOutlookApp", "Einstellungen", "LastSent", "01.01.2000"))
' Prüfen, ob die letzte Nachricht bereits heute gesendet wurde
If lastSent < today Then
' Outlook-Objekt erstellen
Set OutApp = CreateObject("Outlook.Application")
' Vorlage als neue E-Mail öffnen
Set OutMail = OutApp.CreateItemFromTemplate(templatePath)
' Optional: Weitere Anpassungen an der Nachricht vornehmen
' Zum Beispiel: OutMail.Body = "Zusätzlicher Text: " & OutMail.Body
' E-Mail senden
OutMail.Send
' Datum des Sendens in der Registrierung speichern
SaveSetting "MeineOutlookApp", "Einstellungen", "LastSent", CStr(today)
End If
' Bereinigung
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Wichtige Hinweise
- Speicherort der Vorlage: Stellen Sie sicher, dass der Pfad zur Vorlage im Skript korrekt angegeben ist.
- Sicherheit und Compliance: Wie bei allen Automatisierungen, die E-Mails versenden, stellen Sie sicher, dass die Empfänger damit einverstanden sind und dass keine unerwünschten Nachrichten versendet werden.
- Testen: Testen Sie das Makro gründlich, um sicherzustellen, dass alles wie erwartet funktioniert.
Durch die Verwendung einer Vorlage können Sie Zeit sparen und die Konsistenz Ihrer Nachrichten sicherstellen, insbesondere wenn regelmäßig ähnliche Inhalte versendet werden sollen.