Share via


Speichern eines Kalenders auf einem Datenträger

Dieses Beispiel zeigt, wie Sie einen ganzen Kalender auf der Festplatte im ICS-Dateiformat (iCalendar) speichern.

Beispiel

In diesem Codebeispiel wird das CalendarSharing -Objekt verwendet, das das Speichern eines ganzen Kalenders oder eines Bereichs von Terminen aus einem Kalender auf einem Datenträger unterstützt. ICS-Dateien werden in Outlook automatisch so optimiert, dass Terminserien nicht als einzelne Termine in der ICS-Datei gespeichert werden. Je nach der Größe des gespeicherten Kalenders kann das Speichern auf einem Datenträger einige Zeit in Anspruch nehmen. Während des Speicherns des Kalenders scheint das Outlook-Fenster dem Benutzer gegenüber nicht zu reagieren.

Zuerst wird GetCalendarExporter für den standardmäßigen Kalenderordner aufgerufen, um ein CalendarSharing-Objekt abzurufen. Dann werden Eigenschaften des CalendarSharing-Objekts festgelegt, um Kriterien für den Export anzugeben, z. B. ob der ganze Kalender gespeichert werden soll und Details von als privat gekennzeichneten Terminen eingeschlossen werden sollen.

Damit die Kalenderinformation im ICS-Dateiformat gespeichert werden, wird durch das Codebeispiel die SaveAsICal-Methode des CalendarSharing-Objekts aufgerufen.

Wenn Sie Visual Studio verwenden, um dieses Codebeispiel zu testen, müssen Sie der Microsoft Outlook 15.0-Objektbibliothekkomponente zuerst einen Verweis hinzufügen und die Outlook-Variable angeben, wenn Sie den Microsoft.Office.Interop.Outlook-Namespace importieren. Die Anweisung Imports oder using darf im Codebeispiel nicht direkt vor den Funktionen stehen, sondern muss vor der öffentlichen Class-Deklaration hinzugefügt werden. Die folgenden Codezeilen zeigen, wie Sie den Import und die Zuweisung in Visual Basic und C# vornehmen.

Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub SaveCalendarToDisk(ByVal calendarFileName As String)
    If String.IsNullOrEmpty(calendarFileName) Then
        Throw New ArgumentException( _
        "Parameter must contain a value.", "calendarFileName")
    End If

    Dim calendar As Outlook.Folder = TryCast( _
        Application.Session.GetDefaultFolder(_
        Outlook.OlDefaultFolders.olFolderCalendar), Outlook.Folder)
    Dim exporter As Outlook.CalendarSharing = _
        calendar.GetCalendarExporter()

    '' Set the properties for the export
    exporter.CalendarDetail = Outlook.OlCalendarDetail.olFullDetails
    exporter.IncludeAttachments = True
    exporter.IncludePrivateDetails = True
    exporter.RestrictToWorkingHours = False
    exporter.IncludeWholeCalendar = True

    '' Save the calendar to disk
    exporter.SaveAsICal(calendarFileName)
End Sub
private void SaveCalendarToDisk(string calendarFileName)
{
    if (string.IsNullOrEmpty(calendarFileName))
        throw new ArgumentException("calendarFileName", 
        "Parameter must contain a value.");

    Outlook.Folder calendar = Application.Session.GetDefaultFolder(
        Outlook.OlDefaultFolders.olFolderCalendar) as Outlook.Folder;
    Outlook.CalendarSharing exporter = calendar.GetCalendarExporter();

    // Set the properties for the export
    exporter.CalendarDetail = Outlook.OlCalendarDetail.olFullDetails;
    exporter.IncludeAttachments = true;
    exporter.IncludePrivateDetails = true;
    exporter.RestrictToWorkingHours = false;
    exporter.IncludeWholeCalendar = true;

    // Save the calendar to disk
    exporter.SaveAsICal(calendarFileName);
}

Siehe auch