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:
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 .
Ele usa o método GetCalendarExporter do objeto Folder para criar uma referência de objeto CalendarSharing para a pasta.
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.
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.
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.