Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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]

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige