Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Outlook Kalender Export per VBA

Outlook Kalender Export per VBA
05.08.2020 10:12:22
Nikolai
Hallo Zusammen,
gibt es die Möglichkeit in Outlook mit einem VBA Code den Kalender in eine Exceltabelle zu exportieren?
Dabei sollte nur folgendes exportiert werden:
Immer für das aktuelle Jahr
Spalte A: Termin Datum Beginn
Spalte B:Termin Beginn Uhrzeit
Spalte D:Termin Datum Ende
Spalte D:Termin Ende Uhrzeit
Spalte E: Ob Privat oder nicht
Spalte F: Ob Außer
Spalte G: Wem der Kalender gehört
Dies soll alle 30 Minuten aktualisiert werden und in einem ExcelWorkbook gespeichert werden.
Ich habe es zwar geschafft das Excel sich die Daten selber holt, aber so ist es sehr umständlich für die weitere Verwendung für die die Daten dann vorgesehen sind.
Der Code soll dann von 6 Mitarbeitern verwendet werden und somit 6 Excel Workbooks in einem Bestimmten Ordner erstellt werden. Es wäre zu umständlich das jeder der Mitarbeiter jeden Morgen die Exceldatei öffnet damit mein Code arbeiten kann. Outlook öffnet aber jeder von uns sowieso morgens.
Hier der Code den ich bis jetzt in Excel schreiben konnte:
Sub outlook_calendaritemsexport()
Dim o As Outlook.Application, R As Long
Set o = New Outlook.Application
Dim ons As Outlook.Namespace
Set ons = o.GetNamespace("MAPI")
Dim myfol As Outlook.Folder
Set myfol = ons.GetDefaultFolder(9)
Dim myapt As Outlook.AppointmentItem
Range("A1:z1").Value = Array("Von Datum", "Von Zeilt", "Bis Datum", "Bis Zeit", "Betreff")
R = 1000
For Each myapt In myfol.Items
Cells(R, 1).Value = myapt.Start
Cells(R, 2).Value = myapt.Start
Cells(R, 3).Value = myapt.End
Cells(R, 4).Value = myapt.End
Cells(R, 5).Value = myapt.Subject
R = R - 1
Next
Set o = Nothing
Set ons = Nothing
Set myfol = Nothing
Set myapt = Nothing
Application.OnTime Now + TimeValue("00:30:00"), "outlook_calendaritemsexport"
Cells.Select
ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add2 Key:=Columns("A:A" _
), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Tabelle1").Sort
.SetRange Columns("A:Z")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Columns("A:A").Select
Selection.NumberFormat = "m/d/yyyy"
Columns("B:B").Select
Selection.NumberFormat = "h:mm;@"
Columns("C:C").Select
Selection.NumberFormat = "m/d/yyyy"
Columns("D:D").Select
Selection.NumberFormat = "h:mm;@"
End Sub

Würde mich sehr über euer Hilfe freuen. :)
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Outlook Kalender Export per VBA
05.08.2020 19:49:37
Oberschlumpf
Hi Nikolai,
zeig uns doch auch mal per Upload eine Bsp-Datei mit dem Tabellenaufbau und dem Code in der Datei.
Ciao
Thorsten
AW: Outlook Kalender Export per VBA
08.08.2020 07:17:57
Oberschlumpf
Na Nikolai,
kein weiteres Interesse an einer Antwort zu deiner Frage?
Ciao
Thorsten
AW: Outlook Kalender Export per VBA
10.08.2020 10:29:53
Nikolai
Hallo Thorsten,
danke für deine Nachricht. Habe sie jetzt erst gelesen da ich Donnerstag und Freitag nicht auf Arbeit war.
Mittlerweile habe ich einen Code der Funktioniert.
Option Explicit
Sub outlook_calendaritemsexport()
Dim o As Outlook.Application, R As Long
Set o = New Outlook.Application
Dim ons As Outlook.NameSpace
Set ons = o.GetNamespace("MAPI")
Dim myfol As Outlook.Folder
Set myfol = ons.GetDefaultFolder(9)
Dim myapt As Outlook.AppointmentItem
Dim oXLApp As Object, oXLwb As Object, oXLws As Object
Dim lRow As Long
On Error Resume Next
Set oXLApp = GetObject(, "Excel.Application")
If Err.Number  0 Then
Set oXLApp = CreateObject("Excel.Application")
End If
Err.Clear
On Error GoTo 0
oXLApp.Visible = True
Set oXLwb = oXLApp.Workbooks.Open("******.xlsx") '*Dateiname mit Verzeichnis festlegen
Set oXLws = oXLwb.Sheets("Tabelle1")
With oXLws
.Range("A:E").Clear
.Range("A1:E1").Value = Array("Von Datum", "Von Zeilt", "Bis Datum", "Bis Zeit", "Betreff")
R = 3
For Each myapt In myfol.Items
.Cells(R, 1).Value = myapt.Start
.Cells(R, 2).Value = myapt.Start
.Cells(R, 3).Value = myapt.End
.Cells(R, 4).Value = myapt.End
.Cells(R, 5).Value = myapt.Subject
R = R + 1
Next
Set o = Nothing
Set ons = Nothing
Set myfol = Nothing
Set myapt = Nothing
End With
End Sub

Vielleicht könntest du mir aber noch bei einer anderen Sache helfen.
Die Arbeitsmappe soll sich nach dem die Tabelle fertig ist speichern und schließen. (Bin zu blöd den richtigen Befehl zu finden)
Vielen Dank und Gruß
Nikolai
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Outlook Kalender Export per VBA


Schritt-für-Schritt-Anleitung

Um die Outlook Kalenderdaten in eine Excel-Tabelle zu exportieren, kannst du den folgenden VBA-Code verwenden. Dieser Code exportiert die Kalenderdaten für das aktuelle Jahr und speichert sie in einem Excel-Arbeitsbuch.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject" > "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:
Sub outlook_calendaritemsexport()
    Dim o As Outlook.Application, R As Long
    Set o = New Outlook.Application
    Dim ons As Outlook.NameSpace
    Set ons = o.GetNamespace("MAPI")
    Dim myfol As Outlook.Folder
    Set myfol = ons.GetDefaultFolder(9) ' 9 = Kalender
    Dim myapt As Outlook.AppointmentItem
    Dim oXLApp As Object, oXLwb As Object, oXLws As Object

    On Error Resume Next
    Set oXLApp = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then
        Set oXLApp = CreateObject("Excel.Application")
    End If
    Err.Clear
    On Error GoTo 0

    oXLApp.Visible = True
    Set oXLwb = oXLApp.Workbooks.Add
    Set oXLws = oXLwb.Sheets(1)

    With oXLws
        .Range("A1:E1").Value = Array("Von Datum", "Von Zeit", "Bis Datum", "Bis Zeit", "Betreff")
        R = 2
        For Each myapt In myfol.Items
            .Cells(R, 1).Value = myapt.Start
            .Cells(R, 2).Value = myapt.Start
            .Cells(R, 3).Value = myapt.End
            .Cells(R, 4).Value = myapt.End
            .Cells(R, 5).Value = myapt.Subject
            R = R + 1
        Next
    End With

    oXLwb.SaveAs "C:\Dein\Pfad\KalenderExport.xlsx" ' Pfad anpassen
    oXLwb.Close
    oXLApp.Quit

    Set o = Nothing
    Set ons = Nothing
    Set myfol = Nothing
    Set myapt = Nothing
End Sub
  1. Passe den Speicherort in SaveAs an.
  2. Führe das Makro aus, indem du F5 drückst.

Häufige Fehler und Lösungen

  • Fehler: "MAPI nicht verfügbar"
    Überprüfe, ob Outlook korrekt installiert ist und ob du die richtige Outlook-Version verwendest.

  • Excel öffnet sich nicht
    Stelle sicher, dass Excel auf deinem Computer installiert ist. Der Code versucht, eine Instanz von Excel zu starten.

  • Kalenderdaten nicht korrekt
    Achte darauf, dass die Zeitzonen in Outlook und Excel übereinstimmen.


Alternative Methoden

Falls du keinen VBA-Code verwenden möchtest, kannst du auch die Outlook-Kalender exportieren Funktion nutzen:

  1. Gehe in Outlook auf "Datei" > "Öffnen und Exportieren" > "Importieren/Exportieren".
  2. Wähle "In Datei exportieren" und klicke auf "Weiter".
  3. Wähle "Microsoft Excel" als Dateityp und folge den Anweisungen.

Diese Methode ist einfacher, jedoch weniger automatisiert als die VBA-Lösung.


Praktische Beispiele

Du kannst den VBA-Code anpassen, um spezifische Kalenderkategorien zu exportieren. Hier ein Beispiel, wie du nur bestimmte Kategorien exportieren kannst:

If myapt.Categories = "Wichtig" Then
    .Cells(R, 5).Value = myapt.Subject
    R = R + 1
End If

Diese Anpassung ermöglicht es dir, nur die Einträge mit der Kategorie "Wichtig" in deine Excel-Tabelle zu exportieren.


Tipps für Profis

  • Automatisiere den Export, indem du den Code mit der Windows-Aufgabenplanung kombinierst, um ihn täglich auszuführen.
  • Nutze Application.OnTime, um den Export alle 30 Minuten auszuführen, wie im ursprünglichen Codevorschlag.

FAQ: Häufige Fragen

1. Wie kann ich den VBA-Code anpassen, um mehr Felder zu exportieren?
Du kannst weitere Felder wie "Ort" oder "Notizen" hinzufügen, indem du die entsprechenden Eigenschaften der AppointmentItem-Objekte verwendest.

2. Kann ich den Export für mehrere Mitarbeiter automatisieren?
Ja, du kannst den Code so anpassen, dass er für jeden Mitarbeiter ein eigenes Excel-Dokument erstellt, indem du die Schleife für jeden Namen durchläufst und den Dateinamen dynamisch änderst.

3. Welche Excel-Version benötige ich, um diesen VBA-Code zu verwenden?
Der Code sollte in Excel 2010 und neueren Versionen funktionieren, solange die Outlook-Integration aktiviert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige