In meinem letzten Beitrag (dem zweiten Teil dieses Tutorials) hatte ich bereits den Zugriff via API auf den Goolgle Calender erklärt – um ein eigenes Sync-Tool zwischen Outlook und Google Calendar zu erstellen fehlt nun noch die Info, wie man via Visual Basic auf Outlook zugreifen kann.
Im Folgenden verwende ich Visual Basic 2010 Express, jedoch ist das mit älteren oder neueren Versionen (oder C#) nahezu identisch.
Schritt 1:
Das Projekt vom letzten Tutorial laden (oder ein neues VB-Projekt anlegen), dann unter Projekt: Verweise hinzufügen … wählen und unter „COM“ die „Microsoft Office Objekt Library“ und „Microsoft Outlook Objekt Library“ hinzufügen (Version abhängig vom Installierten Outlook/Office; Details siehe Screenshot).
Schritt 2:
Ein einfaches Formular basteln – im meinem Beispiel ein Button sowie ein Textfeld (Multiline=True, Scrollbars=Vertical) zur Test-Ausgabe:
Schritt 3:
So sieht der Code aus – zuerst werden alle Termine des aktuellen Outlook-Kalenders gezählt, dann im Zeitraum von 1.4.2014 bis 5.4.2014 und diese dann ausgegeben:
Dim myOutlook As New Microsoft.Office.Interop.Outlook.Application Dim objKalender As Microsoft.Office.Interop.Outlook.MAPIFolder Dim objTermine As Microsoft.Office.Interop.Outlook.Items Dim objTerminGruppe As Microsoft.Office.Interop.Outlook.Items Dim objTermin As Microsoft.Office.Interop.Outlook.AppointmentItem 'Outlook öffnen objKalender = myOutlook.Application.GetNamespace("MAPI"). GetDefaultFolder(Microsoft.Office.Interop.Outlook. OlDefaultFolders.olFolderCalendar) objTermine = objKalender.Items ' Beispiel 1: Anzahl der Termine ausgeben Dim AnzahlTermine As Integer AnzahlTermine = objKalender.Items.Count MsgBox(AnzahlTermine.ToString & " Termine gefunden.") ' Beispiel 2: Zeitraum auswählen und hier Termine zählen Dim myStartTermin As String = "01.04.2014 00:00" Dim myEndTermin As String = "05.04.2014 00:00" objTerminGruppe = _ objTermine.Restrict("[Start] >= '" & _ myStartTermin & "'" & _ " AND [Start] <= '" & _ myEndTermin & "'" & _ " AND [IsRecurring]=False") ' (auch Recurring-Termine ausschließen, die sind ' gesondert zu behandeln) AnzahlTermine = objTerminGruppe.Count MsgBox("Termine in Zeitraum von " & _ myStartTermin & " bis " & _ myEndTermin & ": " & _ AnzahlTermine) 'Beispiel 3: Termine in zeitraum ausgebe objTerminGruppe.Sort("Start") ' Sortieren For Each objTermin In objTerminGruppe ' einige Beispiele von wichtigen Eigenschaften: TextBox1.Text &= "Subject: " & _ objTermin.Subject.ToString & vbCrLf 'TextBox1.Text &= "EntryID: " & _ ' objTermin.EntryID.ToString & vbCrLf TextBox1.Text &= "Start: " & _ objTermin.Start.ToString & vbCrLf TextBox1.Text &= "End: " & _ objTermin.End.ToString & vbCrLf TextBox1.Text &= "CreationTime: " & _ objTermin.CreationTime.ToString & vbCrLf TextBox1.Text &= "IsRecurring: " & _ objTermin.IsRecurring.ToString & vbCrLf TextBox1.Text &= "LastModificationTime: " & _ objTermin.LastModificationTime.ToString & vbCrLf 'Einige Eigenschaften sind u. U. null - deshalb 'vorher prüfen um Exception zu vermeiden: If Not IsNothing(objTermin.Body) Then TextBox1.Text &= "Body: " & _ objTermin.Body.ToString & vbCrLf End If TextBox1.Text &= "---------------------" & vbCrLf Next
Das war der letzte Teil meines dreiteiligen Tutorials – damit müssten nun alle Grundlagen erklärt sein, die es ermöglichen, ein eigenes Synchronisations-Tool zwischen Outlook und Google Calendar mit Visual Basic zu basteln.
P.S.
Probleme? Fragen? Anregungen? Ich helfe jederzeit und gerne – einfach einen Kommentar oder Mail schreiben, die Antwort kommt schnellstmöglich. Unternehmen, die Unterstützung, Beratung oder Schulung bei der API- oder Webprogrammierung, der Social-Media-Entwicklung oder dem Social-Media-Management benötigen finden zudem entsprechende Angebote meiner Firma auf der Website www.Frank-IT-Beratung.de
Hallo,
du könntest mal den EVO Collaborator probieren. Mit diesem tool kannst du bist zu 100 Profile erstellen und separate Kalender führen. Das sollte euch zufrieden stellen.
Checkt doch mal folgenden Link:
http://synchronisiere.blogspot.de/
Vielen Dank für den Tipp!
Hallo Herr Küster,
vielen Dank für Ihre Mail und Ihr Feedback 🙂
Ich habe leider keinen Exchange-Server, auf dem ich das testen kann, aber es müsste ungefähr so lauten:
GetDefaultFolder(Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders)
Ich hoffe, das hilft weiter?
Schöne Grüße,
Simon A. Frank
Sehr geehrter Herr Frank.
Ich habe diese Anleitung gefunden und die funktioniert „Super“. Ich habe nur ein Problem.
Wie kann ich den einen „Öffentlichen Kalender“ ansprechen bei einem Exchange Server.
Gruß R.Küster