Compartir a través de


Exportación de un calendario mediante el uso compartido de carga

Microsoft Outlook permite compartir información de calendario con otros usuarios mediante un archivo de iCalendar (.ics) que se adjunta a un objeto MailItem. El objeto CalendarSharing se usa para generar el archivo iCalendar desde una carpeta que contiene elementos de calendario y para generar el objeto MailItem al que está asociado el archivo iCalendar.

En este ejemplo se usa el elemento CalendarSharing para compartir información de disponibilidad durante los próximos siete días con un solo destinatario:

  1. En el ejemplo se obtiene una referencia de objeto Folder de la carpeta predeterminada Calendar (Calendario) para el actual usuario mediante el método GetDefaultFolder del objeto NameSpace.

  2. Se usa el método GetCalendarExporter del objeto Folder con el fin de crear una referencia de objeto CalendarSharing para la carpeta.

  3. A continuación, se establecen las siguientes propiedades en el objeto CalendarSharing para restringir el intervalo y el nivel de la información exportada por el objeto:

    • Se establece el valor de la propiedad CalendarDetail para limitar la información de cada elemento de calendario a la información de disponibilidad.

    • Se establecen las propiedades StartDate y EndDate para restringir los elementos de calendario incluidos en el archivo a los próximos siete días.

    • Se establece la propiedad RestrictToWorkingHours para restringir los elementos de calendario a los correspondientes a las horas de trabajo.

    • Se establece la propiedad IncludeAttachments para excluir los datos adjuntos de los elementos de calendario exportados por el objeto.

    • Se establece la propiedad IncludePrivateDetails para excluir los detalles de los elementos de calendario privados exportados por el objeto.

  4. A continuación, se llama al método ForwardAsICal del objeto CalendarSharing para exportar los elementos de calendario a un archivo de iCalendar y crear un objeto MailItem con el archivo de iCalendar como datos adjuntos. La constante olCalendarMailFormatDailySchedule de la enumeración olCalendarMailFormat se usa con el método ForwardAsICal para indicar que el cuerpo del objeto MailItem debe contener, en formato HTML, la información de disponibilidad correspondiente a los próximos siete días.

  5. Por último, se llama al método Add de la colección Recipients del nuevo objeto MailItem para agregar el destinatario especificado, y se usa el método Send para enviar el objeto MailItem.

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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.