vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik:    |   VB-Versionen: VB6, VBA03.08.15
Outlook Kalender auslesen

Dieses Beispiel zeigt, wie man über COM und das Outlook-Application Objekt die in Outlook eingetragenenen Termine für einen bestimmten Zeitraum auslesen kann.

Autor:  Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  2.428 
http://www.tools4vb.de/System:  Win7, Win8, Win10, Win11 Beispielprojekt 

Mit nachfolgendem Extra-Tipp ist es möglich aus der eigenen Anwendung heraus auf die Termine in Microsoft Outlook zuzugreifen und diese auszulesen. Verwendet wird hierbei der Zugriff über die Microsoft Office COM-Schnittstelle. Im Tipp wird bewusst auf Early-Binding verzichtet (Verweis auf Microsoft Office...) und Late-Binding eingesetzt (CreateObject), da es bekanntlich mittlerweile sehr viele unterschiedliche Versionen von Outlook gibt.

Wichtiger Hinweis:
Sollte Microsoft Outlook aktiv gestartet sein, kann es vorkommen, dass der Zugriff über die COM-Schnittstelle nicht funktioniert, wenn Outlook mit anderen Benutzerrechten gestartet ist als die eigene Anwendung!

Nachfolgender Code stellt eine COM-Verbindung zum Kalender von Microsoft Outlook her und ermittelt alle Termine für den angegeben Zeitraum. Die Termine werden hierbei in ein ListBox-Control (List1) eingetragen.

Private Sub Test()
  Dim myOutlook As Object       ' Outlook.Application
  Dim oCalendar As Object       ' Outlook.MAPIFolder
  Dim oItems As Object          ' Outlook.Items
  Dim oAppItems As Object       ' Outlook.Items
  Dim oAppItem As Object        ' Outlook.AppointmentItem
  Dim nCount As Long
  Dim sList As String
  Dim StartTime As String
  Dim EndTime As String
  Dim sAbfrage As String
 
  Screen.MousePointer = 11
  List1.Clear
 
  ' Fehler direkt abfangen, um zu ermitteln, ob Outlook
  ' installiert und gestartet werden kann
  On Error Resume Next
 
  ' dieser Vorgang kann bis zu 30 Sek. dauern,
  ' wenn Outlook bspw. aktiv mit anderen 
  ' Benutzerrechten gestartet ist als die eigene Anwendung
  Set myOutlook = GetObject(, "Outlook.Application")      
  If Err.Number <> 0 Then
    Err.Clear
    Set myOutlook = CreateObject("Outlook.Application")
  End If
  If Err.Number <> 0 Then
    Screen.MousePointer = 0
    MsgBox "Outlook konnte nicht instanziert werden!", vbExclamation
    Exit Sub
  End If
 
  ' Fehlerbehandlung
  On Error GoTo ErrHandler
 
  ' 9 = olFolderCalendar
  Set oCalendar = myOutlook.Application.GetNamespace("MAPI").GetDefaultFolder(9)  
  Set oItems = oCalendar.Items
 
  ' Zeitraum selektieren
  StartTime = "01.08.2015 00:00"
  EndTime = "31.08.2015 00:00"
 
  sAbfrage = "[Start] >= '" & StartTime & "' AND [Start] <= '" & EndTime & "' AND [IsRecurring]=False"
  Set oAppItems = oItems.Restrict(sAbfrage)
  nCount = oAppItems.Count
  If nCount > 0 Then
    ' Termine sortieren und in ListBox ausgeben
    oAppItems.Sort ("Start")
    For Each oAppItem In oAppItems
      sList = Format$(oAppItem.Start, "dd.mm.yy hh:nn") & " - " & _
        Format$(oAppItem.END, "dd.mm.yy hh:nn") & vbTab
      If Not IsNull(oAppItem.Body) Then sList = sList & oAppItem.Body
      List1.AddItem sList
    Next
  Else
    Screen.MousePointer = 0
    MsgBox "Es sind keine Termin im angegebenen Zeitraum vorhanden!", vbInformation
  End If
 
  Set myOutlook = Nothing
  On Error GoTo 0
  Screen.MousePointer = 0
  Exit Sub
 
ErrHandler:
  Screen.MousePointer = 0
  MsgBox "Fehler beim Zugriff auf den Outlook-Kalender!" & vbCrLf & _
    "Fehler " & CStr(Err.Number) & vbCrLf & Err.Description, vbExclamation
End Sub

Eigenschaften (Member) des Termin-Objekts (AppointmentItem)
Das AppointmentItem-Objekt besitzt zahlreiche Eigenschaften. Setzen Sie testweise einen Verweis auf die "Microsoft Office x.x Object Library" und schauen sich die Eigenschaften im Objekt-Browser (F2) an.

Anmerkung:
Beim Zugriff auf die einzelnen Termin-Eigenschaften, wie bspw. Body sollten Sie diese zuvor unbedingt auf Null-Werte prüfen, da es sonst zum Laufzeitfehler "94 - Ungültige Verwendung von Null" kommt!