Я пытаюсь получить свой код для перечисления событий подписанного интернет-календаря из gmail. В настоящее время код выполняет свою работу, но перечисляет только события, созданные в приложении outlook в папке Calender.
Вот текущий код, который я нашел в переполнении стека:
Option Explicit
Sub ListAppointments()
Dim olApp As Object
Dim olNS As Object
Dim olFolder As Object
Dim olApt As Object
Dim NextRow As Long
Dim FromDate As Date
Dim ToDate As Date
FromDate = CDate("08/25/2018")
ToDate = CDate("12/31/2019")
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
If Err.Number > 0 Then Set olApp = CreateObject("Outlook.Application")
On Error GoTo 0
Set olNS = olApp.GetNamespace("MAPI")
Set olFolder = olNS.GetDefaultFolder(9) 'olFolderCalendar 9
NextRow = 2
With Sheets("Sheet1") 'Change the name of the sheet here
.Range("A1:D1").Value = Array("Project", "Date", "Time spent", "Location")
For Each olApt In olFolder.Items
If (olApt.Start >= FromDate And olApt.Start <= ToDate) Then
.Cells(NextRow, "A").Value = olApt.Subject
.Cells(NextRow, "B").Value = CDate(olApt.Start)
.Cells(NextRow, "C").Value = olApt.End - olApt.Start
.Cells(NextRow, "C").NumberFormat = "HH:MM:SS"
.Cells(NextRow, "D").Value = olApt.Location
.Cells(NextRow, "E").Value = olApt.Categories
NextRow = NextRow + 1
Else
End If
Next olApt
.Columns.AutoFit
End With
Set olApt = Nothing
Set olFolder = Nothing
Set olNS = Nothing
Set olApp = Nothing
End Sub
Я почти уверен, что проблема заключается здесь:
Set olFolder = olNS.GetDefaultFolder(9) 'olFolderCalendar 9
Имя папки, к которой я хочу получить доступ, является основным, я пробовал использовать оба из них:
Set olFolder = olNS.GetDefaultFolder(9).Folders("basic").Items
Set olFolder = olNS.GetDefaultFolder(9).Parent.Folders("basic").Items
И ничего из этого не сработало. Ошибка во время выполнения «-2147221233 (8004010f)»: попытка не выполнена. Объект не может быть найден.
Вот основная папка, из которой я хочу получить события.
EDIT:
Итак, вот что я в конечном итоге нашел: olNS.GetDefaultFolder (9) .Parent = email@gmail.com и его дочерний элемент - один из моих календарей «Календарь», показанный на картинке. Родитель «основного» календаря - интернет-календари. Как я могу установить olFolder в каталог '\ Internet Calendars \ basic' вместо '\ email@gmail.com \ Calendar'
Спасибо