Exportieren eines Kalenders mithilfe der Nutzlastfreigabe

Microsoft Outlook bietet die Möglichkeit, Kalenderinformationen mit anderen Benutzern gemeinsam zu nutzen, indem eine, an ein MailItem angefügte iCalendar-Datei (ICS) verwendet wird. Das CalendarSharing-Objekt wird verwendet, um sowohl die iCalendar-Datei aus einem Ordner zu generieren, der Kalenderelemente enthält, als auch um das MailItem-Objekt zu generieren, an das die iCalendar-Datei angefügt ist.

In diesem Beispiel wird das CalendarSharing-Element verwendet, um Frei-/Gebucht-Informationen für die nächsten sieben Tage mit einem Empfänger gemeinsam zu nutzen:

  1. Das Beispiel erhält einen Folder -Objektverweis für den Calendar-Standardordner für den aktuellen Benutzer, indem die GetDefaultFolder -Methode des NameSpace -Objekts verwendet wird.

  2. Es wird die GetCalendarExporter -Methode des Folder -Objekts zum Erstellen eines CalendarSharing -Objektverweises für den Ordner verwendet.

  3. Anschließend werden die folgenden Eigenschaften für das CalendarSharing -Objekt festgelegt, um den Bereich und den Grad an Informationen zu beschränken, die vom Objekt exportiert werden:

    • Die CalendarDetail -Eigenschaft wird so festgelegt, dass die Informationen für die einzelnen Kalenderelemente auf Frei-/Gebucht-Informationen beschränkt werden.

    • Die StartDate - und EndDate -Eigenschaften werden festgelegt, um die in der Datei enthaltenen Kalenderelemente auf die nächsten sieben Tage zu beschränken.

    • Die RestrictToWorkingHours -Eigenschaft wird so festgelegt, dass die Kalenderelemente auf diejenigen beschränkt werden, die in die Arbeitszeiten fallen.

    • Die IncludeAttachments -Eigenschaft wird so festgelegt, dass sämtliche Anlagen für Kalenderelemente, die vom Objekt exportiert werden, ausgeschlossen werden.

    • Die IncludePrivateDetails -Eigenschaft wird so festgelegt, dass die Details von privaten Kalenderelementen, die vom Objekt exportiert werden, ausgeschlossen werden.

  4. Anschließend wird die ForwardAsICal -Methode des CalendarSharing -Objekts aufgerufen, um die Kalenderelemente in eine iCalendar-Datei zu exportieren und ein MailItem -Objekt mit der iCalendar-Datei als Anlage zu erstellen. Die olCalendarMailFormatDailySchedule-Konstante der olCalendarMailFormat -Aufzählung wird mit der ForwardAsICal-Mehtode verwendet, um anzugeben, dass der Text des MailItem Frei-/Gebucht-Informationen für die nächsten sieben Tage im HTML-Format enthalten sollte.

  5. Schließlich wird die Add -Methode für die Recipients -Auflistung des neu erstellten MailItem -Objekts aufgerufen, um den angegebenen Empfänger hinzuzufügen, und die Send -Methode zum Senden des MailItem verwendet.

Public Sub ShareWorkCalendarByPayload() 
 
 Dim oNamespace As NameSpace 
 Dim oFolder As Folder 
 Dim oCalendarSharing As CalendarSharing 
 Dim oMailItem As MailItem 
 
 On Error GoTo ErrRoutine 
 ' Get a reference to the Calendar default folder 
 Set oNamespace = Application.GetNamespace("MAPI") 
 Set oFolder = oNamespace.GetDefaultFolder(olFolderCalendar) 
 
 ' Get a reference to a CalendarSharing object for that 
 ' folder. 
 Set oCalendarSharing = oFolder.GetCalendarExporter 
 
 ' Set the CalendarSharing object to restrict 
 ' the information shared in the iCalendar file. 
 With oCalendarSharing 
 ' Send free/busy information only. 
 .CalendarDetail = olFreeBusyOnly 
 
 ' Send information for the next seven days. 
 .startDate = Now 
 .endDate = DateAdd("d", 7, Now) 
 
 ' Restrict information to working hours only. 
 .RestrictToWorkingHours = True 
 
 ' Exclude attachments and private information. 
 .IncludeAttachments = False 
 .IncludePrivateDetails = False 
 End With 
 
 ' Get the mail item containing the iCalendar file 
 ' and calendar information. 
 Set oMailItem = oCalendarSharing.ForwardAsICal( _ 
 olCalendarMailFormatDailySchedule) 
 
 ' Send the mail item to the specified recipient. 
 With oMailItem 
 .Recipients.Add "someone@example.com" 
 .Send 
 End With 
 
EndRoutine: 
 On Error GoTo 0 
 Set oMailItem = Nothing 
 Set oCalendarSharing = Nothing 
 Set oFolder = Nothing 
 Set oNamespace = Nothing 
Exit Sub 
 
ErrRoutine: 
 Select Case Err.Number 
 Case 287 ' &H0000011F 
 ' The user denied access to the Address Book. 
 ' This error occurs if the code is run by an 
 ' untrusted application, and the user chose not to 
 ' allow access. 
 MsgBox "Access to Outlook was denied by the user.", _ 
 vbOKOnly, _ 
 Err.Number & " - " & Err.Source 
 Case -2147467259 ' &H80004005 
 ' Export failed. 
 ' This error typically occurs if the CalendarSharing 
 ' method cannot export the calendar information because 
 ' of conflicting property settings. 
 MsgBox Err.Description, _ 
 vbOKOnly, _ 
 Err.Number & " - " & Err.Source 
 Case -2147221233 ' &H8004010F 
 ' Operation failed. 
 ' This error typically occurs if the GetCalendarExporter method 
 ' is called on a folder that doesn't contain calendar items. 
 MsgBox Err.Description, _ 
 vbOKOnly, _ 
 Err.Number & " - " & Err.Source 
 Case Else 
 ' Any other error that may occur. 
 MsgBox Err.Description, _ 
 vbOKOnly, _ 
 Err.Number & " - " & Err.Source 
 End Select 
 
 GoTo EndRoutine 
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.