Guardar un calendario en el disco
En este ejemplo se muestra cómo guardar un calendario completo en el disco en el formato de archivo de iCalendar (.ics).
Ejemplo
Este código de ejemplo usa el objeto CalendarSharing que admite guardar un calendario completo o un rango de citas del calendario en el disco. Outlook optimiza automáticamente un archivo .ics para que las citas periódicas no se guarden como citas individuales en el archivo .ics. Dependiendo del tamaño del calendario, guardarlo en el disco puede tardar mucho tiempo. Al guardar el calendario, la ventana de Outlook no responde.
El ejemplo de código llama primero a GetCalendarExporter en la carpeta de Calendario predeterminada para obtener un objeto CalendarSharing. Luego, establece las propiedades del objeto CalendarSharing para especificar criterios para la exportación, por ejemplo, si desea guardar todo el calendario e incluir los detalles de las citas que están marcados como "privadas".
Para guardar la información del calendario en el formato de archivo .ics, el ejemplo de código llama al método SaveAsICal del objeto CalendarSharing.
Si usa Visual Studio para probar este ejemplo de código, primero debe agregar una referencia al componente de la biblioteca de objetos de Microsoft Outlook 15.0 y especificar la variable de Outlook al importar el espacio de nombres Microsoft.Office.Interop.Outlook. La instrucción Imports o using no deben producirse directamente antes de las funciones en el ejemplo de código, pero deben agregarse antes de la declaración de clase pública. Las líneas siguientes de código muestran cómo realizar la importación y la asignación en Visual Basic y 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);
}