Добрый день, уважаемые форумчане.Возникла необходимость экспортировать данные из календарей сотрудников для последующего анализа, а именно экспорт Appointmentitem в Excel.
Пользуюсь следующим VBA кодом, вызываемым из Excel:
Он работает так как надо, экспортирует все данные по всем AppointmentItem в строки листа Excel за исключением экспорта Body(текста самого события). Выскакивает ошибка - Type Mysmatch 13. Прошу помощи. Что не так делаю в этом коде?
Пользуюсь следующим VBA кодом, вызываемым из Excel:
| Код |
|---|
Option Explicit
Public Sub ListAppointments()
On Error GoTo ErrHand:
Application.ScreenUpdating = False
Const olFolderCalendar As Byte = 9
Dim olApp As Object: Set olApp = CreateObject("Outlook.Application")
Dim olNS As Object: Set olNS = olApp.GetNamespace("MAPI")
Dim olFolder As Object
Dim olApt As Object
Dim objOwner As Object: Set objOwner = olNS.CreateRecipient("ivanov@mail.ru")
Dim NextRow As Long
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
objOwner.Resolve
If objOwner.Resolved Then
Set olFolder = olNS.GetSharedDefaultFolder(objOwner, olFolderCalendar)
End If
ws.Range("A1:E1").Value2 = Array("Subject", "Start", "End", "Location", "Body")
If olFolder.Items.Count = 0 Then Exit Sub
Dim myArr() As Variant: ReDim myArr(0 To 4, 0 To olFolder.Items.Count - 1)
On Error Resume Next
For Each olApt In olFolder.Items
myArr(0, NextRow) = olApt.Subject
myArr(1, NextRow) = olApt.Start
myArr(2, NextRow) = olApt.End
myArr(3, NextRow) = olApt.Location
myArr(4, NextRow) = olApt.Body
NextRow = NextRow + 1
Next
On Error GoTo 0
ws.Range("A2:E" & NextRow + 1).Value = WorksheetFunction.Transpose(myArr)
ws.Columns.AutoFit
cleanExit:
Application.ScreenUpdating = True
Exit Sub
ErrHand:
Resume cleanExit
End Sub
|