Вечер всех,
Попытка написать некоторый код в Outlook, который сгенерирует в Excel список всех встреч в пределах категории и диапазона дат.
Я могу изолировать встречинормально и при циклическом прохождении выводит дату и время начала и тему правильно, однако выдает ошибки в строках, связанных с организатором и получателями (ошибка времени выполнения 287 - ошибка, определенная приложением или объектом)
Чтобы уточнить, эти строки прекрасно работают:
.Cells(i, 1).Value = oAppointmentItem.Start
.Cells(i, 2).Value = oAppointmentItem.Subject
Эта строка не работает (как и бит получателей под ней):
.Cells(i, 3).Value = oAppointmentItem.Organizer
Есть идеи, почему?
Естьпробовал различные варианты, связанные с календарем по умолчанию, и разные способы обработки элемента назначения, и он не может работать.Особенно странно, если некоторые свойства выводят.
Да, и если я помещаю встречу в окно просмотра, эти свойства просто показывают «<>» в поле значения.
'Outlook variables
Dim oOl As Application
Dim oNS As NameSpace
Dim oCalendar As Object
Dim oItems
Dim oItemsFiltered
Dim MeetingRecipients As Recipients
Dim TempRecipient As Recipient
Dim oAppointmentItem As AppointmentItem
Dim DateStart As Date
Dim DateEnd As Date
Dim FilterCriteria As String
'Excel variables
Dim ExcelApp As Object 'Excel.Application
Dim ExcelWb As Excel.Workbook
Dim ExcelWs As Excel.Worksheet
Dim i As Integer
''Prepare Outlook
'Store references
Set oOl = New Outlook.Application
Set oNS = oOl.GetNamespace("MAPI")
Set oCalendar = oNS.GetDefaultFolder(olFolderCalendar)
Set oItems = oCalendar.Items
Debug.Print oItems.Count
'Set restrictions
DateStart = Date - 10
DateEnd = Date + 20
FilterCriteria = "[Start] >= '" & Format$(DateStart, "dd/mm/yyyy hh:mm AMPM") & "' AND [End] <= '" & Format$(DateEnd, "dd/mm/yyyy hh:mm AMPM") & "'"
'Debug.Print FilterCriteria
'Apply restrictions
Set oItemsFiltered = oItems.Restrict(FilterCriteria)
Debug.Print oItemsFiltered.Count
''Prepare Excel
Set ExcelApp = GetObject(, "Excel.Application")
ExcelApp.Visible = True
Set ExcelWb = ExcelApp.Workbooks.Add
Set ExcelWs = ExcelWb.Sheets(1)
i = 1
Dim ReqAtt() As String
''Export appointment data
'Loop appointments
For Each oAppointmentItem In oItemsFiltered
Debug.Print oAppointmentItem.Class
'Debug.Print oAppointmentItem.Subject & " - " & oAppointmentItem.Start
If InStr(oAppointmentItem.Categories, "Case") > 0 Then
With ExcelWs
.Cells(i, 1).Value = oAppointmentItem.Start
.Cells(i, 2).Value = oAppointmentItem.Subject
.Cells(i, 3).Value = oAppointmentItem.Organizer
Set MeetingRecipients = oAppointmentItem.Recipients
For Each TempRecipient In MeetingRecipients
.Cells(i, 4).Value = .Cells(i, 3).Value & "; " & TempRecipient
Next TempRecipient
End With
i = i + 1
End If
Next oAppointmentItem
Set oAppointmentItem = Nothing
Set oAppointments = Nothing
Set oNS = Nothing
Set oOl = Nothing
MsgBox "End"