L oop через папку календаря комнаты Outlook, если для DefaultItemType комнаты установлено значение 0 (olMailItem) - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь получить статистику собраний из комнатных календарей для записи в файл Excel.

Сценарий работает для комнат, где DefaultItemType установлен на 1 (olAppointmentItem), но прерывается, когда DefaultItemType в комнате равно 0 (olMailItem).

Я думаю, что мне нужно найти встречу, связанную с приглашениями на собрание, с использованием метода MeetingItem.GetAssociatedAppointment.

Вот что У меня есть:

  • CAL_LIST - массив с адресами комнат.
  • Строки MsgBox просто для меня, чтобы понять, что происходит.
For Each varCal In CAL_LIST
    Set olkOwn = Session.CreateRecipient(CStr(varCal))
    olkOwn.Resolve
    If olkOwn.Resolved Then
        Set olkFld = Session.GetSharedDefaultFolder(olkOwn, olFolderCalendar)
        If olkFld.DefaultItemType = olAppointmentItem Then
            MsgBox "" & varCal & " - " & olkFld.DefaultItemType & " - DEFAULT: olAppointmentItem."
            Set olkLst = olkFld.Items
            olkLst.Sort "[Start]"
            olkLst.IncludeRecurrences = True
            Set olkRes = olkLst.Restrict("[Start] >= '" & Format(datBeg, "ddddd h:nn AMPM") & "' AND [Start] <= '" & Format(datEnd, "ddddd h:nn AMPM") & "'")
            For Each olkApt In olkRes
                'Only export appointments
                If olkApt.Class = olAppointment Then
                    strLst = ""
                    For Each olkRec In olkApt.Recipients
                        strLst = strLst & olkRec.Name & ", "
                    Next
                    If strLst <> "" Then strLst = Left(strLst, Len(strLst) - 2)
                    'Add a row for each field in the message you want to export
                    excWks.Cells(lngRow, 1) = varCal
                    excWks.Cells(lngRow, 2) = olkApt.Organizer
                    excWks.Cells(lngRow, 3) = olkApt.Location
                    excWks.Cells(lngRow, 4) = olkApt.Start
                    excWks.Cells(lngRow, 5) = olkApt.End
                    'excWks.Cells(lngRow, 6) = strLst
                    lngRow = lngRow + 1
                    lngCnt = lngCnt + 1
                End If
            Next
        ElseIf olkFld.DefaultItemType = olMailItem Then
            MsgBox "" & varCal & " - " & olkFld.DefaultItemType & " - DEFAULT: olMailItem."

            MsgBox "I think I need to do something here with MeetingItem.GetAssociatedAppointment but I can't get it to work..."

        Else
            MsgBox "" & varCal & " - " & olkFld.DefaultItemType & " - DEFAULT: is not a olAppointmentItem nor a olMailItem."
        End If
    Else
        MsgBox "I could not find a recipient named " & varCal & ".  Calendar skipped.  I will continue processing the remaining calendars.", vbExclamation + vbOKOnly, SCRIPT_NAME
    End If
Next
...