Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Outlook gebucht-Status auslesen?

Forumthread: Outlook gebucht-Status auslesen?

Outlook gebucht-Status auslesen?
Marc
Hallo zusammen!
Um Schulungstermine zu vergeben hab ich eine Reihe Namen, die gruppiert einen Termin in Outlook bekommen.
In Outlook (leider per Hand) wird der Termin von mir editiert, alle Namen als Teilnehmer identifiziert und eingeladen. (Noch nicht gesendet!)
Im Excel hab ich ein Makro geschrieben, was mir die Termine mit allen Teilnehmer wieder auslesen kann. Status der Teilnahme ist "ohne Rückmeldung" (logisch, hab ja noch nix geschickt)
Gibt es eine Möglichkeit, auszulesen, ob sich der von mir für die Person anvisierte Termin mit einem weiteren Termin überschneidet? Dann könnte ich schon sofort einen anderen Termin zuweisen.
Mit den erläuterungen sieht der code bisher wie folgt aus:
Vielen Dank für´s "reindenken"
Gruß, Marc
Sub Read_Control_Termin_to_Excel()
'by Ramses
'Datumsabfage über Inputbox
'Verweis auf Outlook 11 Library im VB-Editor muss gesetzt sein
'Early Binding ab Outlook 2003 nicht möglich
'weil die Rückgabewerte der ITEM-Indexes zufällig ist und von der
'Installation abhängt !!
Dim myR As Integer, i As Integer
Dim startDate As Date, endDate As Date, recDate As Date, extDate As Date
Dim myOlApp As Object, myOlSpace As Object, myOlFolder As Object ', olFolderCalendar As Integer
Dim myOlDateRange As Object, sAppoint As Object
Dim extRecurr As Object
Dim strRecurr As String
'Datum vorschlagen
Select Case Weekday(Now, vbMonday)
Case Is > 5
recDate = Now + 3
Case Else
recDate = Now
End Select
'Datum abfragen
startDate = Format(DateValue(InputBox("Welches Datum soll abgefragt werden ?" & Chr$(13) & _
"Datum muss im Format ""01.01.2004"" eingeben werden", "Terminsuche", Format(recDate, "dd. _
mm.yyyy"))))
endDate = startDate + 30
'Deklaration
Set myOlApp = CreateObject("Outlook.Application")
Set myOlSpace = myOlApp.GetNamespace("MAPI")
Set myOlFolder = myOlSpace.GetDefaultFolder(9) 'olFolderCalendar
'Einträge ab Zeile 2
myR = 2
Sheets("Übersicht").Select
'Löscht alle zellen in der aktiven Tabelle
Cells.ClearContents
Cells.Interior.ColorIndex = xlNone
Cells(1, 1) = "Termin"
Cells(1, 2) = "Uhrzeit"
'Cells(1, 3) = "Teilnehmerzahl"
Cells(1, 4) = "Zusagen"
Cells(1, 5) = "ohne RÜ"
Cells(1, 6) = "Absagen"
Set myOlDateRange = myOlFolder.Items.Restrict("[Start] >= '" & startDate & "' And [End]  ", Absage" Then
x = x & a & Chr(10)
Else
y = y & .Recipients(empf) & Chr(10)
absagen = absagen + 1
End If
'Debug.Print "====================================================="
'Teilnehmer
'Cells(myR, 3) = .Recipients.Count - absagen
'Cells(myR, 6) = .Body
myR = myR + 1
Next empf
End If
End With
Next
Columns("d:f").ColumnWidth = 50
Columns("a:f").AutoFit
lz = Cells(Rows.Count, "g").End(xlUp).Row
Range("a2:g" & lz).Sort key1:=Range("g2"), key2:=Range("d2"), key3:=Range("e2")
Rows("2:" & lz).AutoFit
Range("g:g").ClearContents
'Variablen leeren
Set myOlApp = Nothing
Set myOlSpace = Nothing
Set myOlFolder = Nothing
'MsgBox "Alle Termine für den " & startDate & " eingelesen!"
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Outlook gebucht-Status auslesen, Ansatz
16.05.2011 13:56:23
Marc
Hi! Irgendwie muß es gehen: Im Outlook heißt die Eigenschaft freebusy.
Leider hab ich die Syntax noch nicht auf die Reiehe gekriegt, um sie in meinen code zu integrieren....
Was ist am folgenden falsch?
debug.print myOlSpace.sAppoint.recipient(.Recipients(empf)).freeBusy(False)
Gruß, Marc
Anzeige
gebucht-Status auslesen: gelöst. Ergebnis?
16.05.2011 14:28:28
Marc
Das muß eingefügt werden:
Set myRecipient = myOlSpace.CreateRecipient(.Recipients(empf))
Debug.Print myRecipient.freeBusy(.Start, 60 * 24)
Das kommt raus.
1000000000000000000001100001100
Aber was heißt das?
O-Ton Hilfe:

Die Anzahl der Minuten pro Zeichen, die in der zurückgegebenen Frei/Gebucht-Zeichenfolge  _
dargestellt werden.


Anzeige
Ergebnisinterpretation? Niemand?
18.05.2011 06:35:35
Marc
Guten Morgen!
Zahlen zeigen offenbar den Status gebucht oder frei für irgendeinen Invervall an
Viell. pro 1/2-Stunde gebucht, frei,frei,frei,frei,frei,frei, usw.
Aber wann fängt die Kiste an auszuwerten? Wann beginnt der Tag? Eine schlüssige Parallele zu den in Outlook gemachten Terminen kann ich nicht erkennen.
Gruß, Marc
Anzeige
AW: Ergebnisinterpretation? Niemand?
19.05.2011 15:45:03
Christian
Hallo Marc,
zB. in:
http://msdn.microsoft.com/en-us/library/bb219898%28v=office.12%29.aspx
steht: "return a string of free/busy information with one character for each day". Insofern dürften deine 31 Zeichen mit den 31 Tagen im Mai übereinstimmen. Wie du das für "one character for each hour" hinkriegst, steht auch da.
Gruß
Christian
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Outlook gebucht-Status auslesen und interpretieren


Schritt-für-Schritt-Anleitung

  1. Verweis auf die Outlook-Bibliothek setzen:

    • Öffne den VBA-Editor in Excel (Alt + F11).
    • Gehe zu Extras -> Verweise und aktiviere die "Microsoft Outlook xx.0 Object Library".
  2. Makro erstellen:

    • Erstelle ein neues Modul und füge den folgenden Code ein, um den Outlook-Anwesenheitsstatus auszulesen:
    Sub Read_Control_Termin_to_Excel()
       Dim myOlApp As Object, myOlSpace As Object, myOlFolder As Object
       Dim myRecipient As Object
       Dim startDate As Date, endDate As Date
    
       ' Initialisiere Outlook
       Set myOlApp = CreateObject("Outlook.Application")
       Set myOlSpace = myOlApp.GetNamespace("MAPI")
       Set myOlFolder = myOlSpace.GetDefaultFolder(9) 'olFolderCalendar
    
       ' Datum abfragen
       startDate = Date ' aktuelles Datum
       endDate = Date + 30 ' 30 Tage in die Zukunft
    
       ' Durchlaufe alle Teilnehmer
       For Each empf In .Recipients
           Set myRecipient = myOlSpace.CreateRecipient(empf)
           Debug.Print myRecipient.freeBusy(startDate, 60 * 24) ' 24 Stunden
       Next empf
    
       ' Variablen leeren
       Set myOlApp = Nothing
       Set myOlSpace = Nothing
       Set myOlFolder = Nothing
    End Sub
  3. Führe das Makro aus:

    • Starte das Makro, um die Anwesenheitsstatus-Daten zu sammeln und auszuwerten.

Häufige Fehler und Lösungen

  • Fehler: "MAPI-E-Mail-Client nicht gefunden"

    • Stelle sicher, dass Outlook korrekt installiert ist und du über die entsprechenden Berechtigungen verfügst.
  • Problem: Ungültiges Datum

    • Überprüfe, ob das eingegebene Datum im richtigen Format vorliegt. Das Format sollte "DD.MM.YYYY" sein.
  • Fehler beim Zugriff auf den Status

    • Achte darauf, dass die CreateRecipient-Methode korrekt aufgerufen wird.

Alternative Methoden

  • Verwendung von Outlook VBA: Du kannst auch direkt in Outlook ein Makro erstellen, das die Anwesenheitsstatus anzeigt. Dies könnte einfacher sein, wenn du regelmäßig mit Outlook arbeitest.

  • Power Automate: Wenn Du mit Microsoft 365 arbeitest, kannst Du Power Automate nutzen, um automatisierte Flows zu erstellen, die Informationen zu Anwesenheitsstatus abrufen.


Praktische Beispiele

  1. Interpretation von Ausgaben:

    • Der Rückgabewert 1000000000000000000001100001100 steht für den Status der einzelnen 30-Minuten-Intervalle. Hierbei bedeutet 1 gebucht und 0 frei.
  2. Datum und Zeit festlegen:

    • Um den Status für einen bestimmten Tag zu überprüfen, kannst Du den startDate und endDate im Makro anpassen.

Tipps für Profis

  • Verwendung von Debug.Print:

    • Nutze Debug.Print um Informationen während der Ausführung des Makros in das unmittelbare Fenster auszugeben. So kannst Du den Prozess besser nachvollziehen.
  • Optimierung der Performance:

    • Wenn Du viele Teilnehmer hast, überlege, ob Du das Makro so anpasst, dass nur relevante Daten abgefragt werden, um die Performance zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich den Anwesenheitsstatus für mehrere Tage abfragen? Du kannst die Schleife im Makro anpassen und das Datum für die Abfrage iterativ erhöhen.

2. Was bedeutet der Rückgabewert von freeBusy genau? Der Rückgabewert zeigt den Status für festgelegte Intervalle an. 1 bedeutet "gebucht" und 0 bedeutet "frei".

3. Kann ich den Status auch für andere Zeiträume abfragen? Ja, indem Du die Parameter in der freeBusy-Methode anpasst, kannst Du den Status für verschiedene Zeiträume abfragen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige