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

VBA - Freigegebene Kalender auswählen

Forumthread: VBA - Freigegebene Kalender auswählen

VBA - Freigegebene Kalender auswählen
31.05.2017 11:17:35
Hendrik
Hallo zusammen,
ich bräuchte da mal wieder ein paar schlaue Füchse für eine Problemlösung :).
Ich möchte über VBA von Excel auf Outlook zugreifen. Genauer möchte ich einen beliebigen freigegebenen Kalender auswählen.
Hintergrund: Die Termine in einem freigegebenen Kalender sollen in Excel aufgelistet werden. Ich habe auch schon hierzu in diesem Forum einige super Vorschläge dafür nutzen können. Leider komme ich mit dem Befehl .Pickfolder nicht mehr weiter, da ich dort nur meinen eigenen, persönlichen Kalender auswählen kann.
Frage: Gibt es die Möglichkeit mit dem .Pickfolder auf einen freigegeben Kalender zu zugreifen ? Oder eine Alternative zu .Pickfolder?
Hier ein Teil des Codes, welcher so glaube ich für die Lösung relevant ist:
Sub Ol_to_xl()
Dim myOlApp As Object, myOlSpace As Object, myOlFolder As Object, ChosenFolder As Object
Set myOlApp = CreateObject("Outlook.Application")
Set myOlSpace = myOlApp.GetNamespace("MAPI")
'Set myOlFolder = myOlSpace.GetDefaultFolder(olFolderCalendar)
Set ChosenFolder = myOlApp.GetNamespace("MAPI").PickFolder.Items.Add
Hier werden dann die Termine in Excel aufgelistet
Set myOlApp = Nothing
Set myOlSpace = Nothing
Set myOlFolder = Nothing
End Sub

Vielen Dank vorab und
LG
Hendrik
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Freigegebene Kalender in Excel über VBA auswählen


Schritt-für-Schritt-Anleitung

Um einen freigegebenen Kalender in Excel über VBA auszuwählen, kannst du die folgende Schritt-für-Schritt-Anleitung verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du im Projektbereich mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" wählst.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub Ol_to_xl()
       Dim myOlApp As Object, myOlSpace As Object, myOlFolder As Object, ChosenFolder As Object
       Set myOlApp = CreateObject("Outlook.Application")
       Set myOlSpace = myOlApp.GetNamespace("MAPI")
       Set ChosenFolder = myOlSpace.PickFolder 'Hier wird der Ordner ausgewählt
    
       If Not ChosenFolder Is Nothing Then
           'Hier können die Termine in Excel aufgelistet werden
           Dim item As Object
           For Each item In ChosenFolder.Items
               'Füge hier deinen Code hinzu, um die Termine zu verarbeiten
           Next item
       End If
    
       Set myOlApp = Nothing
       Set myOlSpace = Nothing
       Set myOlFolder = Nothing
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählen und auf "Ausführen" klickst.


Häufige Fehler und Lösungen

  • Fehler: .PickFolder gibt nur den persönlichen Kalender zurück
    Lösung: Stelle sicher, dass du die richtige Namespace-Referenz verwendest und dass der freigegebene Kalender für deinen Account verfügbar ist.

  • Fehler: "Objekt erforderlich"
    Lösung: Überprüfe, ob der Benutzer, dessen Kalender du abrufen möchtest, dir die notwendigen Berechtigungen gegeben hat.


Alternative Methoden

Wenn du .PickFolder nicht verwenden kannst oder eine Excel Kalender Alternative suchst, könntest du auch die Outlook-Objektbibliothek direkt einfügen und die Ordner explizit auflisten. Hier ein Beispiel:

  1. Gehe zu Extras > Verweise im VBA-Editor.
  2. Aktiviere Microsoft Outlook xx.x Object Library.
  3. Verwende den folgenden Code, um die Ordner aufzulisten:

    Dim olNS As Outlook.Namespace
    Set olNS = Application.GetNamespace("MAPI")
    Dim olFolder As Outlook.Folder
    For Each olFolder In olNS.Folders
       Debug.Print olFolder.Name
    Next olFolder

Auf diese Weise kannst du auch die Kalenderwoche in Outlook anzeigen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Termine aus einem freigegebenen Kalender in Excel auflisten kannst:

Sub ListAppointments()
    Dim myOlApp As Object
    Dim myOlSpace As Object
    Dim ChosenFolder As Object
    Dim item As Object
    Set myOlApp = CreateObject("Outlook.Application")
    Set myOlSpace = myOlApp.GetNamespace("MAPI")
    Set ChosenFolder = myOlSpace.PickFolder

    Dim row As Integer
    row = 1

    If Not ChosenFolder Is Nothing Then
        For Each item In ChosenFolder.Items
            If TypeOf item Is Outlook.AppointmentItem Then
                Cells(row, 1).Value = item.Subject
                Cells(row, 2).Value = item.Start
                Cells(row, 3).Value = item.End
                row = row + 1
            End If
        Next item
    End If

    Set myOlApp = Nothing
    Set myOlSpace = Nothing
End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Füge On Error Resume Next hinzu, um unerwartete Fehler während der Ausführung zu handhaben.
  • Optimiere die Performance: Deaktiviere die Bildschirmaktualisierung mit Application.ScreenUpdating = False, um die Ausführungsgeschwindigkeit zu erhöhen.
  • Kalender übereinander legen: Du kannst mehrere Kalender gleichzeitig in Outlook anzeigen, um die Termine besser zu vergleichen.

FAQ: Häufige Fragen

1. Wie kann ich auf mehrere freigegebene Kalender zugreifen?
Du kannst den gleichen Code verwenden und den Benutzer bitten, die gewünschten Kalender auszuwählen.

2. Funktioniert das auch mit älteren Excel-Versionen?
Ja, der Code sollte in den meisten Versionen von Excel, die VBA unterstützen, funktionieren, jedoch kann die Benutzeroberfläche leicht variieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige