Экспорт календаря с помощью общего доступа к полезным данным
Microsoft Outlook включает возможность совместного использования сведений календаря с другими пользователями с помощью файла iCalendar (.ics), присоединенного к MailItem. Объект CalendarSharing используется для создания файла iCalendar из папки, содержащей элементы календаря, и для создания MailItem , к которому присоединен файл iCalendar.
В этом примере элемент CalendarSharing используется для предоставления сведений о доступности на ближайшие семь дней одному получателю:
Пример получает ссылку на объект Folder для папки Calendar по умолчанию для текущего пользователя с помощью метода GetDefaultFolder объекта NameSpace .
Он использует метод GetCalendarExporter объекта Folder для создания ссылки на объект CalendarSharing для папки.
Затем он задает следующие свойства объекта CalendarSharing , чтобы ограничить диапазон и уровень информации, экспортируемой объектом:
Свойство CalendarDetail задается для ограничения сведений для каждого элемента календаря только сведениями о доступности и доступности.
Свойства StartDate и EndDate задаются для ограничения элементов календаря, включенных в файл, до следующих семи дней.
Свойство RestrictToWorkingHours задается, чтобы ограничить элементы календаря теми, которые попадают в рабочее время.
Свойство IncludeAttachments задается так, чтобы исключить все вложения для элементов календаря, экспортированных объектом .
Свойство IncludePrivateDetails задается для исключения сведений о любых частных элементах календаря, экспортированных объектом .
Затем он вызывает метод ForwardAsICal объекта CalendarSharing для экспорта элементов календаря в файл iCalendar и создания объекта MailItem с файлом iCalendar в виде вложения. Константа olCalendarMailFormatDailySchedule перечисления olCalendarMailFormat используется с методом ForwardAsICal , чтобы указать, что текст MailItem должен содержать в формате HTML сведения о доступности в течение следующих семи дней.
Наконец, метод Add для коллекции Recipients созданного объекта MailItem вызывается для добавления указанного получателя, а метод Send используется для отправки 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
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.