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

Forumthread: Outlook auslesen

Outlook auslesen
19.05.2020 22:47:07
Guesa
Hallo Forum
habe hier im Forum diesen Code gefunden (Kalender auslesen). Ich möchte gerne noch die Uhrzeiten von den Terminen von-bis mit auslesen. Wie muss man die Uhrzeiten definieren das diese noch mit drin sind? Schon mal recht herzlichen Dank für Eure Hilfe
Gruß, Guesa
Option Explicit
Sub Kalender_export()
'Variablen Definieren
Dim Outl_App As Object
Dim Namens_R As Object
Dim akt_Ordner As Object
Dim Kalendereintrag As Object
Dim Element_kal As Object
Dim StartDatum As Date
Dim EndeDatum As Date
Dim i As Long
Const olFolderCalendar As Long = 9
Set Outl_App = CreateObject("Outlook.Application")
Set Namens_R = Outl_App.GetNamespace("MAPI")
Set akt_Ordner = Namens_R.PickFolder 'beliebigen Kalender auswählen
Set Element_kal = akt_Ordner.Items
Tabelle1.Name = "Outlook_Statusbericht"
StartDatum = DateSerial(2017, 1, 1)
EndeDatum = DateSerial(2017, 12, 31)
EndeDatum = EndeDatum + 1
Application.ScreenUpdating = False
'Überschriften vorbereiten
Cells(1, 1) = "Ereignis"
Cells(1, 2) = "Beginn am"
Cells(1, 3) = "Besprechungsressourcen"
Cells(1, 4) = "Beschreibung"
Cells(1, 5) = "Kategorien"
Cells(1, 6) = "Ort"
Cells(1, 7) = "Serientermin"
'Sicherstellen, dass bei Serien die einzelnen Einträge übernommen werden
Element_kal.Sort "Start"
Element_kal.IncludeRecurrences = True
Set Kalendereintrag = Element_kal.Find("[Start]>""" & StartDatum & """ AND [End]

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Outlook auslesen
20.05.2020 00:02:58
Oberschlumpf
Hi,
die halbe Antwort hast du schon in der Zeile
Tabelle1.Cells(i, 2).Value = Left(.Start, 10)
Mit dem Befehl Left() werden vom vollständigen Startwert, z Bsp 01.01.2017 13:00, die ersten 10 Zeichen "abgeschnitten", was dann eben "nur" das Datum ergibt.
Die Verwendung von nur Left() finde ich unglücklich, denn als Ergebnis wird ein Text-Wert ausgegeben und nicht ein echter Datumswert.
Ich würde hier diesen Befehl verwenden:
Tabelle1.Cells(i, 2).Value = CDate(Left(.Start, 10))

Wenn du als neuen Befehl, in einer anderen Spalte, nun diesen Befehl verwendest...
Tabelle1.Cells(i, 2).Value = CDate(Right(.Start, 8))

...würde bei obigem Bsp-.Start 01:00:00 PM rauskommen; als echter Zeitwert.
Da in Deutschland aber üblicherweise als Stunde 0 bis 23 verwendet wird, müsstest du den Befehl noch so anpassen:
Tabelle1.Cells(i, 2).Value = Format(CDate(Right(.Start, 8))
, "hh:mm:ss")
Ergebnis = 13:00:00
So, ich hab deinen Code wie folgt geändert (ich zeige hier nur die relevanten Zeilen):
Teil 1:

'Überschriften vorbereiten
Cells(1, 1) = "Ereignis"
Cells(1, 2) = "Beginn am"
'2 zusätzliche Spalten für Start- und Endezeit
    Cells(1, 3) = "beginnt um"
Cells(1, 4) = "endet um"
'die weiteren Spalten müssen natürlich um 2 verschoben werden
Cells(1, 5) = "Besprechungsressourcen"
Cells(1, 6) = "Beschreibung"
Cells(1, 7) = "Kategorien"
Cells(1, 8) = "Ort"
Cells(1, 9) = "Serientermin"

Teil 2

Tabelle1.Cells(i, 1).Value = .Subject
Tabelle1.Cells(i, 2).Value = CDate(Left(.Start, 10))
If .alldayevent = False Then
Tabelle1.Cells(i, 3).Value = Format(CDate(Right(.Start, 8)), "hh:mm:ss")
Tabelle1.Cells(i, 4).Value = Format(CDate(Right(.End, 8)), "hh:mm:ss")
End If
Tabelle1.Cells(i, 5).Value = .Resources
Tabelle1.Cells(i, 6).Value = .Body
Tabelle1.Cells(i, 7).Value = .Categories
Tabelle1.Cells(i, 8).Value = .Location
Tabelle1.Cells(i, 9).Value = .IsRecurring

Jetzt wunderst du dich vielleicht wegen des Eintrags .alldayevent.
Mit dieser Eigenschaft wird festgelegt, ob es sich um einen Ganztages-Termin handelt (00:00:00 bis 23:59:59) oder nicht.
Bei Ganztages-Terminen enthalten .Start und .End nur das Datum, nicht aber die Uhrzeit.
So sind alle Zeilen, die in den Spalten "beginnt um" / "endet um" keine Einträge haben, Ganztages-Termine.
Wenn du auch dann Einträge in den Spalten haben möchtest, kannst du die If-Bedingung ja anpassen.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Outlook auslesen
20.05.2020 20:16:07
Guesa
Hallo Thorsten
Recht herzlichen Dank für Deine Hilfe, und ja Du konntest helfen. Habe das ganze jetzt noch ein wenig angepasst, denn alle Felder brauche ich nicht.
Gruß, Guesa
;
Anzeige
Anzeige

Infobox / Tutorial

Outlook Kalender auslesen und Uhrzeiten integrieren


Schritt-für-Schritt-Anleitung

Um einen Outlook-Kalender auszulesen und dabei die Uhrzeiten der Termine zu integrieren, kannst du den folgenden VBA-Code verwenden. Dieser Code hilft dir, die relevanten Informationen aus deinem Outlook-Kalender zu extrahieren.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Sub Kalender_export()
    Dim Outl_App As Object
    Dim Namens_R As Object
    Dim akt_Ordner As Object
    Dim Kalendereintrag As Object
    Dim Element_kal As Object
    Dim StartDatum As Date
    Dim EndeDatum As Date
    Dim i As Long
    Const olFolderCalendar As Long = 9

    Set Outl_App = CreateObject("Outlook.Application")
    Set Namens_R = Outl_App.GetNamespace("MAPI")
    Set akt_Ordner = Namens_R.PickFolder 'beliebigen Kalender auswählen
    Set Element_kal = akt_Ordner.Items
    Tabelle1.Name = "Outlook_Statusbericht"

    StartDatum = DateSerial(2023, 1, 1)
    EndeDatum = DateSerial(2023, 12, 31)
    EndeDatum = EndeDatum + 1
    Application.ScreenUpdating = False

    'Überschriften vorbereiten
    Cells(1, 1) = "Ereignis"
    Cells(1, 2) = "Beginn am"
    Cells(1, 3) = "beginnt um"
    Cells(1, 4) = "endet um"
    Cells(1, 5) = "Besprechungsressourcen"
    Cells(1, 6) = "Beschreibung"
    Cells(1, 7) = "Kategorien"
    Cells(1, 8) = "Ort"
    Cells(1, 9) = "Serientermin"

    Element_kal.Sort "Start"
    Element_kal.IncludeRecurrences = True
    Set Kalendereintrag = Element_kal.Find("[Start] >= """ & StartDatum & """ AND [End] <= """ & EndeDatum & """")

    i = 2
    Do While Not Kalendereintrag Is Nothing
        With Kalendereintrag
            Tabelle1.Cells(i, 1).Value = .Subject
            Tabelle1.Cells(i, 2).Value = CDate(Left(.Start, 10))
            If .AllDayEvent = False Then
                Tabelle1.Cells(i, 3).Value = Format(CDate(Right(.Start, 8)), "hh:mm:ss")
                Tabelle1.Cells(i, 4).Value = Format(CDate(Right(.End, 8)), "hh:mm:ss")
            End If
            Tabelle1.Cells(i, 5).Value = .Resources
            Tabelle1.Cells(i, 6).Value = .Body
            Tabelle1.Cells(i, 7).Value = .Categories
            Tabelle1.Cells(i, 8).Value = .Location
            Tabelle1.Cells(i, 9).Value = .IsRecurring
        End With
        i = i + 1
        Set Kalendereintrag = Element_kal.FindNext
    Loop
    Application.ScreenUpdating = True
End Sub
  1. Führe das Skript aus, um die Daten aus deinem Outlook-Kalender auszulesen.

Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"

    • Stelle sicher, dass du den richtigen Kalender ausgewählt hast. Der Code fragt nach dem Kalender, den du verwenden möchtest.
  • Uhrzeiten werden nicht korrekt angezeigt

    • Überprüfe die Formatierung der Zeitwerte. Achte darauf, dass du das Format "hh:mm:ss" korrekt anwendest, wie im obigen Code gezeigt.

Alternative Methoden

Wenn du keinen VBA-Code verwenden möchtest, kannst du auch die Funktion "Kalender freigeben Outlook" nutzen, um die Termine in eine Excel-Datei zu exportieren. Gehe dazu in Outlook auf die Kalenderansicht und wähle "Kalender freigeben". Dadurch kannst du die Termine als CSV-Datei exportieren und in Excel importieren.


Praktische Beispiele

Ein Beispiel für einen Outlook-Urlaubsplan könnte so aussehen:

  1. Erstelle in Outlook einen Kalender für deinen Urlaubszeitraum.
  2. Füge deine Urlaubsanträge als Termine hinzu.
  3. Verwende den obigen VBA-Code, um die Informationen in Excel anzuzeigen.

Tipps für Profis

  • Erweiterung des Codes: Du kannst den VBA-Code anpassen, um zusätzliche Informationen wie Erinnerungen oder Teilnehmer auszulesen.
  • Automatisierung: Integriere den Code in eine Excel-Mappe, die automatisch beim Öffnen die neuesten Kalenderdaten abruft.

FAQ: Häufige Fragen

1. Wie kann ich die Uhrzeiten ausblenden? Du kannst die Spalten für Uhrzeiten in Excel einfach ausblenden, indem du mit der rechten Maustaste auf die Spaltenüberschrift klickst und "Ausblenden" wählst.

2. Ist der Code mit allen Excel-Versionen kompatibel? Der angegebene VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen, wie Excel 2010 und höher.

3. Wie kann ich mein Passwort für Outlook auslesen? Das Auslesen des Passworts für Outlook ist nicht direkt möglich und wird aus Sicherheitsgründen nicht empfohlen. Verwende stattdessen die Funktionen zur Passwortverwaltung von Outlook.

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