Свойства Outlook VBA AppointmentItem недоступны - PullRequest
0 голосов
/ 12 декабря 2018

Вечер всех,

Попытка написать некоторый код в 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"
...