Outlook Kalender über Makro nach Excel-Datei exportieren

Bernd_Munich

Mitglied
Hallo,

kann mir bitte jemand helfen, wie ich über ein Makro aus Outlook einen bestimmten Kalender (komplett oder von - bis) in eine Excel-Datei exportiere?

Vielen Dank Bernd
 
createObject

Hallo,
auch hier ist die CreateObject-Methode genau das Richhtige. Habe mal kurz ein Beispiel verfasst, dies importiert zwar Kalendar-Daten in eine Exceltabelle, andersherum geht es aber ähnlich. Also den Code in eine Excel-Tabelle kopieren, über "Extras->Verweise" die "Microsoft Outlook Objekt Library" hinzufügen und einfach mal loslegen.

Code:
Public Sub kal_imp()
Set Outl_App = CreateObject("Outlook.Application")
Set Namens_R = Outl_App.GetNamespace("MAPI")
Set Akt_Ordner = Namens_R.GetDefaultFolder(olFolderCalendar) 'Kalender auswählen
Set Kal_Ordner = Akt_Ordner.Folders(1) 'Unterordner wählen falls vorhanden
Set Element_kal = Kal_Ordner.Items

'***
Cells(1, 1) = "Ereignis"
Cells(1, 2) = "Beginn"
Cells(1, 3) = "Ende"

For i = 1 To Element_kal.Count
    Cells(i + 1, 1) = Element_kal(i)
    Cells(i + 1, 2) = Element_kal(i).Start
    Cells(i + 1, 3) = Element_kal(i).End
    '... weitere Eigenschaften im Objektkatalog unter "AppointmentItem"
    
Next i

'objekte freigeben
Set Outl_App = Nothing
Set Namens_R = Nothing
Set Akt_Ordner = Nothing
Set Kal_Ordner = Nothing
Set Element_kal = Nothing

End Sub

Möchtest du nur bestimmte Zeiträume ausgeben, so kannst du zum Beispiel die Daten vorher an der Stelle (***) mit folgendem Code Sortieren (hier absteigend nach Beginn):

Code:
Element_kal.Sort "[start]", True

Anschließend den Zeitraum mit einer If-Abfrage im Ausgabeblock eingrenzen.
(--Naja, vielleicht ist das Sortieren auch gar nicht notwendig!)

gruß
thekorn
 
Hallo thekorn,

super - danke!

Ich habe keine Ahnung, wo ich diese Informationen her bekomme hätte:

Set Outl_App = CreateObject("Outlook.Application")
Set Namens_R = Outl_App.GetNamespace("MAPI")
Set Akt_Ordner = Namens_R.GetDefaultFolder(olFolderCalendar) 'Kalender auswählen
Set Kal_Ordner = Akt_Ordner.Folders(1) 'Unterordner wählen falls vorhanden
Set Element_kal = Kal_Ordner.Items

Dafür kracht es in der roten Zeile. olFolderCalendar ist "leer" - Ist das eine Konstante aus der "Microsoft Outlook Objekt Library"?

In meinem Excel 2002 SP3 gibt es nähmlich keine "Extras->Verweise"? Und unter Add-Ins / Automatisierung - falls das gemeint war - keine "Microsoft Outlook Objekt Library"?

Sorry, ich stelle mich wohl ziemlich ungeschickt an.

Bernd
 
passt schon

Du musst natürlich im "Visual Basic Editor" "Extras-Verweise" auswählen, hoffe, dass die das bei office 2003 nicht wegrationalisiert haben, habe nämlich 2000 und da läufts!

gruß
thekorn
 
Hallo thekorn,

Verweis etc. ist bei mir auch im VB-Editor vorhanden und funktioniert.

Wenn ich die Hilfe richtig verstanden habe, muß ich das nicht auf jedem Rechner wiederholen, auf dem das Makro laufen soll, da es im Projekt = Makro gespeichert wird.

Da ich selber keinen Unterordner habe gabs noch einen Absturz bei
'Set Kal_Ordner = Akt_Ordner.Folders(1) 'Unterordner wählen falls vorhanden

So läuft es ohne Unterordner
Set Kal_Ordner = Akt_Ordner 'Nimmt den Standardordner

Ich habe nun inzwischen auch den "Objektkatalog" gefunden...

Ich hoffe, jetzt komme ich erstmal ein Stück alleine weiter. Wenns nochmal hakt melde ich mich wieder.

Ansonsten recht herzlichen Dank für die "Starthilfe"!

Bernd
 
Das ist ein spannendes Thema:

Ich habe in meinem Outlook aber nun zwei Kalender. Einen lokal, das ist der den ich mit GetDefaultFolder(olFolderCalendar) erreichen kann und einen in unserer Zentrale auf dem Exchangeserver.

Doch ich bekomme es nicht hin diesen zweiten Kalender anzusprechen. Alle Daten liegen bei mir in diesem zweiten Kalender auf der Platte und werden mit der Zentrale mehrmals täglich abgeglichen.

fliessbild004.png


Details unter http://www.edv-tipp.de/docs/wirklich_offline3.htm

Hat jemand eine Idee, was ich anstelle von GetDefaultFolder(olFolderCalendar) nutzen kann?

Grüße
Stefan
 
Hallo Stefan,

ich hatte das gleich Problem wie du - habe es für Kontakte so gelöst:

'Nimmt den Standard-Kontaktordner
'Set Akt_Ordner = Namens_R.GetDefaultFolder(olFolderContacts)
'Unterordner wählen falls vorhanden
'Set Kon_Ordner = Akt_Ordner.Folders(1)
'So läuft es ohne Unterordner - Nimmt den Standardordner
'Set Kon_Ordner = Akt_Ordner

' Erlaubt die Auswahl des Ordners
Set Kon_Ordner = Namens_R.PickFolder

Hast du inzwischen eine bessere Lösung gefunden?

Grüße Bernd
 

Neue Beiträge

Zurück