Compartilhar via


Exportar um calendário usando o Compartilhamento de Carga

O Microsoft Outlook inclui a capacidade de compartilhar informações de calendário com outros usuários usando um arquivo iCalendar (.ics) anexado a um MailItem. O objeto CalendarSharing é usado para gerar o arquivo iCalendar de uma pasta que contém itens de calendário e para gerar o MailItem ao qual o arquivo iCalendar está anexado.

Este exemplo usa o item CalendarSharing para compartilhar informações de disponibilidade nos próximos sete dias com um único destinatário:

  1. O exemplo obtém uma referência de objeto Folder para a pasta padrão Calendário para o usuário atual, usando o método GetDefaultFolder do objeto NameSpace .

  2. Ele usa o método GetCalendarExporter do objeto Folder para criar uma referência de objeto CalendarSharing para a pasta.

  3. Em seguida, ele define as propriedades a seguir no objeto CalendarSharing para restringir o intervalo e o nível de informações exportadas pelo objeto:

    • A propriedade CalendarDetail está definida para limitar as informações de cada item de calendário apenas para informações gratuitas/ocupadas.

    • As propriedades StartDate e EndDate são definidas para restringir os itens de calendário incluídos no arquivo para os próximos sete dias.

    • A propriedade RestrictToWorkingHours está definida para restringir os itens de calendário àqueles que estão dentro do horário de trabalho.

    • A propriedade IncludeAttachments está definida para excluir quaisquer anexos para itens de calendário exportados pelo objeto.

    • A propriedade IncludePrivateDetails está definida para excluir os detalhes de quaisquer itens de calendário privado exportados pelo objeto.

  4. Em seguida, ele chama o método ForwardAsICal do objeto CalendarSharing para exportar os itens de calendário para um arquivo iCalendar e criar um objeto MailItem com o arquivo iCalendar como um anexo. A constante olCalendarMailFormatDailySchedule da enumeração olCalendarMailFormat é usada com o método ForwardAsICal para indicar que o corpo do MailItem deve conter, em formato HTML, informações gratuitas/ocupadas pelos próximos sete dias.

  5. Por fim, o método Add para a coleção Destinatários do objeto MailItem recém-criado é chamado para adicionar o destinatário especificado e o método Enviar é usado para enviar o 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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.