Compartilhar via


Salvar um calendário no disco

Este exemplo mostra como salvar um calendário inteiro no disco no formato de arquivo iCalendar (ICS).

Exemplo

Este exemplo de código usa o objeto CalendarSharing que é compatível com o salvamento de um calendário inteiro ou um intervalo de compromissos do calendário para o disco. O Outlook otimiza automaticamente um arquivo .ics para que os compromissos recorrentes não sejam salvos como compromissos individuais no arquivo .ics. Dependendo do tamanho do calendário que está sendo salvo, salvar um calendário em disco pode levar um tempo significativo. Ao salvar o calendário, a janela do Outlook parece não responder ao usuário.

O exemplo de código primeiro chama GetCalendarExporter na pasta Calendário padrão para receber um objeto CalendarSharing. Em seguida, ele define propriedades do objeto CalendarSharing para especificar critérios para a exportação, como se deve salvar o calendário todo e se deseja incluir detalhes dos compromissos marcados como "particulares".

Para salvar as informações do calendário no formato de arquivo .ics, o exemplo de código chama o método ForwardAsICal do objeto CalendarSharing.

Se usar o Visual Studio para testar este exemplo de código, adicione primeiro uma referência ao componente da biblioteca de objetos do Microsoft Outlook 15.0 e especifique a variável do Outlook quando importar o namespace Microsoft.Office.Interop.Outlook. A instrução Imports ou using não deve vir diretamente antes de funções no exemplo de código, mas deve ser adicionada antes da declaração Class pública. The following lines of code show how to do the import and assignment in Visual Basic and C#.

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);
}

Confira também