Outlook VBA verwenden, um die Tagesordnung von morgen per E-Mail zu versenden.
Hier ist ein Beispiel:
Folgende Termine sollen versendet werden
1. jeden Abend um 21:00 Uhr einen Auszug aus meinem Kalender für den nächsten Tag per E-Mail versenden
2. jeden Sonntag um 21:00 Uhr einen Auszug aus meinem Kalender für die kommende Woche (Mo-So) per E-Mail senden.
Um die Tagesordnung von morgen per E-Mail zu versenden, benötigen wir ein Outlook VBA-Script. Hier ist ein Beispiel, wie man dies umsetzen kann:
- Öffne Outlook und klicke auf “Alt + F11”, um den Visual Basic Editor zu öffnen.
- Klicke auf “Einfügen” und wähle “Modul”, um ein neues Modul zu erstellen.
- Gib einen Namen für das Modul ein (z.B. “TagesordnungMorgen”) und klicke auf “OK”.
- Füge den folgenden Code in das Modul ein:
Sub TagesordnungMorgen()
'Variablen deklarieren
Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim olItem As Outlook.AppointmentItem
Dim olRecip As Outlook.Recipient
Dim olMail As Outlook.MailItem
Dim olSubject As String
Dim olBody As String
Dim olSig As String
Dim olStartTime As Date
Dim olEndTime As Date
Dim olRecurrencePattern As RecurrencePattern
Dim olRange As Range
Dim olApptCount As Integer
Dim olApptCounter As Integer
'Startzeit und Endzeit des nächsten Tages definieren
olStartTime = DateAdd("d", 1, Date) & " 00:00:00"
olEndTime = DateAdd("d", 1, Date) & " 23:59:59"
'Signatur in den Body einfügen
olSig = vbCrLf & vbCrLf & "-- " & Environ("Username") & vbCrLf & "Mit freundlichen Grüßen," & vbCrLf & "Max Mustermann"
'Outlook-Objekte erstellen
Set olApp = New Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set olFolder = olNS.GetDefaultFolder(olFolderCalendar)
'Nach Terminen suchen
Set olRange = olFolder.Items.Restrict("[Start] >= '" & olStartTime & "' AND [End] <= '" & olEndTime & "'") 'Wenn Termine gefunden wurden If olRange.Count > 0 Then
'E-Mail erstellen
Set olMail = olApp.CreateItem(olMailItem)
olMail.Subject = "Tagesordnung für morgen"
Set olRecip = olMail.Recipients.Add("empfaenger@email.com")
olRecip.Type = olTo
'Termine durchlaufen und in Body einfügen
For olApptCounter = 1 To olRange.Count
Set olItem = olRange.Item(olApptCounter)
olBody = olBody & olItem.Start & " - " & olItem.End & vbCrLf & olItem.Subject & vbCrLf & vbCrLf
Next olApptCounter
'Body und Signatur in die E-Mail einfügen
olMail.Body = "Guten Tag," & vbCrLf & vbCrLf & "hier ist Ihre Tagesordnung für morgen:" & vbCrLf & vbCrLf & olBody & olSig
'E-Mail senden
olMail.Send
'Erfolgsmeldung ausgeben
MsgBox "Die Tagesordnung für morgen wurde erfolgreich versendet.", vbInformation, "Erfolgreich"
Else
'Keine Termine gefunden
MsgBox "Es wurden keine Termine für morgen gefunden.", vbExclamation, "Keine Termine"
End If
'Outlook-Objekte freigeben
Set olFolder = Nothing
Set olNS = Nothing
Set olApp
End Sub
Dieses VBA-Skript sucht alle Termine im Kalender, die am nächsten Tag stattfinden und erstellt eine E-Mail mit der Tagesordnung. Die E-Mail wird an den Empfänger gesendet und enthält eine Liste aller gefundenen Termine sowie eine Signatur am Ende.
Um dieses Skript auszuführen, müssen Sie es entweder manuell starten oder eine Regel erstellen, die es automatisch jeden Abend um 21:00 Uhr ausführt.
Um das zweite Beispiel zu implementieren, müssen nur einige Änderungen am obigen Skript vorgenommen werden. Anstatt nach Terminen für den nächsten Tag zu suchen, muss nach Terminen für die nächste Woche gesucht werden. Hier ist der geänderte Code:
Sub Wochenueberblick()
'Variablen deklarieren
Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim olItem As Outlook.AppointmentItem
Dim olRecip As Outlook.Recipient
Dim olMail As Outlook.MailItem
Dim olSubject As String
Dim olBody As String
Dim olSig As String
Dim olStartTime As Date
Dim olEndTime As Date
Dim olRecurrencePattern As RecurrencePattern
Dim olRange As Range
Dim olApptCount As Integer
Dim olApptCounter As Integer
'Startzeit und Endzeit der nächsten Woche definieren
olStartTime = DateAdd("d", (2 - Weekday(Date)), Date) & " 00:00:00"
olEndTime = DateAdd("d", (8 - Weekday(Date)), Date) & " 23:59:59"
'Signatur in den Body einfügen
olSig = vbCrLf & vbCrLf & "-- " & Environ("Username") & vbCrLf & "Mit freundlichen Grüßen," & vbCrLf & "Max Mustermann"
'Outlook-Objekte erstellen
Set olApp = New Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set olFolder = olNS.GetDefaultFolder(olFolderCalendar)
'Nach Terminen suchen
Set olRange = olFolder.Items.Restrict("[Start] >= '" & olStartTime & "' AND [End] <= '" & olEndTime & "'") 'Wenn Termine gefunden wurden If olRange.Count > 0 Then
'E-Mail erstellen
Set olMail = olApp.CreateItem(olMailItem)
olMail.Subject = "Wochenüberblick"
Set olRecip = olMail.Recipients.Add("empfaenger@email.com")
olRecip.Type = olTo
'Termine durchlaufen und in Body einfügen
For olApptCounter = 1 To olRange.Count
Set olItem = olRange.Item(olApptCounter)
olBody = olBody & olItem.Start & " - " & olItem.End & vbCrLf & olItem.Subject & vbCrLf & vbCrLf
Next olApptCounter
'Body und Signatur in die E-Mail einfügen
olMail.Body = "Guten Tag," & vbCrLf & vbCrLf & "hier ist Ihr Wochenüberblick:" & vbCrLf & vbCrLf & olBody & olSig
'E-Mail senden
olMail.Send
'Erfolgsmeldung ausgeben
MsgBox "Der Wochenüberblick wurde erfolgreich versendet.", vbInformation, "Erfolgreich"
Else
'Keine Termine gefunden
MsgBox "Es wurden keine Termine für die kommende Woche gefunden.", vbExclamation, "Keine Termine"
End Sub
Dieses Skript ist ähnlich wie das vorherige, sucht aber nach Terminen in der kommenden Woche (Montag bis Sonntag). Auch hier wird eine E-Mail erstellt und an den Empfänger gesendet, die eine Liste aller gefundenen Termine sowie eine Signatur am Ende enthält.
Um dieses Skript auszuführen, musst du es entweder manuell starten oder eine Regel erstellen, die es automatisch jeden Sonntag um 21:00 Uhr ausführt.
Wir hoffen, dass diese Beispiele helfen und zeigen, wie man Outlook VBA verwenden kann, um Zeit zu sparen und effizienter zu arbeiten.