# Outlook Kalender über Makro nach Excel-Datei exportieren



## Bernd_Munich (18. März 2004)

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


----------



## thekorn (18. März 2004)

*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.


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


```
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


----------



## Bernd_Munich (18. März 2004)

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


----------



## thekorn (18. März 2004)

*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


----------



## Bernd_Munich (19. März 2004)

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


----------



## EDV-TIPP (16. April 2004)

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. 







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


----------



## Bernd_Munich (14. Mai 2004)

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


----------

