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:
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.
Es wird die GetCalendarExporter -Methode des Folder -Objekts zum Erstellen eines CalendarSharing -Objektverweises für den Ordner verwendet.
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.
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.
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.