Thema Datum  Von Nutzer Rating
Antwort
Rot Excel vba : Abfrage der Termindaten eines Meetings
16.08.2024 14:16:44 vandor
NotSolved
17.08.2024 12:46:02 Gast39159
NotSolved

Ansicht des Beitrags:
Von:
vandor
Datum:
16.08.2024 14:16:44
Views:
241
Rating: Antwort:
  Ja
Thema:
Excel vba : Abfrage der Termindaten eines Meetings

Hallo

es besteht das Problem oder zumindest der Verdacht , daß aus dem Outlook Kalender Einträge verschwinden,
ohne mein aktives dazutun, ggf. eine falsche Einstellung in Outlook. Eingehende Besprechungsanfrage pflege ich
aktuell auch in anderen Terminplanern, sodaß kein Termin verloren geht.
Den einzigen Hinweis auf den Termin, der verloren ging,  war im Outlook-Ordner 'gelöschte Elemente'.

Alle Meeting-Requests im Outlook-Ordner 'gelöschte Elemente' (ggf. später zusätzlich auch andere Ordner) 
sollen mit 
Subject , 
ReceivedTime , und 
calendarItem.GetAssociatedAppointment(False).Start 

erfasst werden, unabhängig davon, ob der Termin nun aktualisiert wurde , oder nicht. 
Im Zweifelsfalle findet ein Abgleich mit Kollegen statt.

Im 'Fall 1' : der Termin ist im Kalender auch vorhanden funktioniert der Bezug 
auf calendarItem.GetAssociatedAppointment(False).Start ; dann brauche ich ihn eigentlich nicht: ich sehe den Termin ja im Kalender

Im 'Fall 2' und 'Fall 3' werden die Termine in Outlook angezeigt , aber ich kenne die Vorgehensweise in VBA nicht, wie man
diese Terminfelder abfragen kann. Hier ist 
Set A = calendarItem.GetAssociatedAppointment(False) 
und 
A Is Nothing
.

Das Programm läuft ohne Fehler durch, der Bezug auf die Termindaten des Meetings ist bis jetzt nur möglich, wenn 
das Meeting auch tatsächlich im Kalender eingetragen ist. (Gutfall)

Verwendet wird: Office 365 (Microsoft 365 Apps for Enterprise) und Excel Version 2402

Gruß B.Kochs

Fall 1 ____________________________________________________________________________________
Meeting_der_Abteilung_A
28.06.2024 15:11:03 
A.Start 09.09.2024 09:30:00

<Mail im gelöschten Ordner> :
keine Hinweis auf ein Nichtvorhandensein des Kalenderelements: der Termin ist ja auch im Kalender
___________________________________________________________________________________________
Fall 2 ____________________________________________________________________________________
Meeting_der_Abteilung_A
28.06.2024 13:15:03 
A is Nothing

<Mail im gelöschten Ordner> :
Diese Besprechungsanfrage wurde aktualisiert, nachdem diese Nachricht gesendet wurde.
Öffnen Sie eine spätere Aktualisierung, oder öffnen Sie das Element im Kalender.
___________________________________________________________________________________________
Fall 3 ____________________________________________________________________________________
Meeting_der_Abteilung_A
28.06.2024 15:21:34 
A is Nothing 

<Mail im gelöschten Ordner> :
Diese Besprechung wurde im Kalender nicht gefunden. Sie wurde möglicherweise verschoben oder gelöscht
___________________________________________________________________________________________

start der sub aus BK_Class ________________________________________________________________________________
Sub Test_CM()
    Dim o_BK_Class As New BK_Class
    o_BK_Class.EnumerateDefaultAppointmentsAndDoSomethingSillyThatIllustratesAPoint ("")
End Sub
Klassenmodul: BK_Class ____________________________________________________________________________________
Friend Sub EnumerateDefaultAppointmentsAndDoSomethingSillyThatIllustratesAPoint(calendarType As String)
        'https://stackoverflow.com/questions/4365890/find-underlying-object-type-for-outlook-meetingitem
        'https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/object-variable-not-set-error-91
        Dim myOutlookApp        As Object
        Dim myNameSpace         As Outlook.Namespace
        Dim myFolder            As Outlook.Folder
        
        Dim calendar      As Outlook.Folder
        Dim calendarItems As Outlook.Items
        Dim calendarItem  As Object
        
        
        Dim A As AppointmentItem
        
        'Dim myAppt As AppointmentItem
        Dim myMtg As Outlook.MeetingItem
        
        Set myOutlookApp = CreateObject("Outlook.Application")
        Set myNameSpace = myOutlookApp.GetNamespace("MAPI")
        
        Set calendar = myNameSpace.GetDefaultFolder(olFolderDeletedItems)
        Set calendarItems = calendar.Items.Restrict("[MessageClass] = 'IPM.Schedule.Meeting.Request'")
        
        'If calendarType = "AppointmentItem" Then
        '    calendar = OutlookApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar)
        '    calendarItems = calendar.Items
        'Else 'MeetingItem (are assume that is the case)
        '    calendar = OutlookApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox)
        '    calendarItems = calendar.Items
        'End If
 
        'Dim i As Integer
        'i = 0
        'Do Until i = calendarItems.Count
            'With myFolder.Items.Restrict("[MessageClass] = 'IPM.Schedule.Meeting.Request'").Item(olItemsCount)
            
        '    Console.WriteLine (calendarItems(i - 1).MessageClass)
            'AppointmentItem = IPM.Appointment
            'MeetingRequest = IPM.Schedule.Meeting.Request
        'Loop
        
        'funzt zum Teil
        'Debug.Print String(65535, vbCr)
        For olItemsCount = 1 To calendarItems.Count
           Set calendarItem = calendarItems.Item(olItemsCount)
           
           'Debug.Print (calendarItem.Subject) ' <-funktioniert für alle Item - Objekte ohne Fehler
           
           'Set myAppt = calendarItem.GetAssociatedAppointment(False)
           
           'Debug.Print (calendarItems.Item(olItemsCount).Subject)
           'Debug.Print (myAppt.Start) ' <-funktioniert nur für das erste Item , beim 2. Element : Laufzeitfehler 91 Objektvariable ... nicht festgelegt
           
           'https://learn.microsoft.com/en-us/office/vba/api/outlook.appointmentitem
           
           If calendarItem.MessageClass = "IPM.Schedule.Meeting.Request" Then
              If (calendarItems.Item(olItemsCount).Subject = "Meeting_der_Abteilung_A") Then
              Debug.Print (calendarItems.Item(olItemsCount).Subject)
              Debug.Print (calendarItems.Item(olItemsCount).ReceivedTime)
              
              Set A = calendarItem.GetAssociatedAppointment(False)
              If (A Is Nothing) Then
                 Debug.Print ("A is Nothing ")
              Else
                 Debug.Print ("A.Start " & A.Start)
              End If
              Debug.Print ("__________________________________")
              End If
           Else
              Debug.Print ("Meeting.Request NO")
           End If
        Next
    
        'Release COM Objects!
        'If calendarItems Is Not Null Then
        '   Marshal.ReleaseComObject (calendarItems)
        'End If
        'If calendar Is Not Null Then
        '   Marshal.ReleaseComObject (calendar)
        'End If

End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Excel vba : Abfrage der Termindaten eines Meetings
16.08.2024 14:16:44 vandor
NotSolved
17.08.2024 12:46:02 Gast39159
NotSolved