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: 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) 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! |