Anzeige
Archiv - Navigation
492to496
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
492to496
492to496
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Outlook-Termine eines bestimmten Tages aufrufen

Outlook-Termine eines bestimmten Tages aufrufen
30.09.2004 17:48:12
Olli
Hallo liebe Forumsgemeinde,
habe da mal eine Frage und hoffe, dass Ihr mir weiterhelfen könnt.
Ich möchte über ein Textfeld in einer UF ein Datum eingeben und per OK-Button dann die Outlook-Termine von diesem einen Tag in Excel einlesen. Geht das?
Hat wer Tips für mich, wie ich das bewerkstelligen kann? Wäre riesig nett.
Gruß
Olli

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Outlook-Termine eines bestimmten Tages aufrufen
sergiesam
Hi
hier ein Beispiel:
https://www.herber.de/bbs/user/11516.xls

Sub OutlookTerminEinlesen()
Dim outl, Datum As Date
Dim ns, terminOrdner, termine, termin
Set outl = CreateObject("Outlook.Application")
Set ns = outl.GetNamespace("MAPI")
Set terminOrdner = ns.GetDefaultFolder(9) 'olFolderCalendar
'Filtere Termine dieses Tages
Datum = Range("B1")
Set termine = terminOrdner.Items.Restrict("[Start] >= '" & Datum & "' and [end] <= & '" & Datum + 1 & "'")
Range("A6").Activate
If Range("A6") <> "" Then Range(Range("A6"), Range("A6").End(xlDown)).EntireRow.Delete
For Each termin In termine
ActiveCell = termin.Subject
ActiveCell.Offset(0, 1) = termin.Start
ActiveCell.Offset(0, 2) = termin.End
ActiveCell.Offset(1, 0).Activate
Next termin
End Sub

Gruß,
sam
Anzeige
AW: Outlook-Termine eines bestimmten Tages aufrufe
Ramses
Hallo Sam
Sorry,... ich musste es einfach zeigen ;-)
Woher wusstest du das mit dem "Restrict" ?
Gruss Rainer
AW: Outlook-Termine eines bestimmten Tages aufrufe
sergiesam
hi,
ich habe schon einiges mit Outlook programmiert (eigenen Abgleich mit access/Outlook) und ich habe ein Buch über die Programmierung von Outlook.
Ich hoffe Olli meldet sich auch noch und weiß unsere Mühen zu schätzen, ein Forum lebt ja auch von Rückmeldungen, gell?
bist ja auch ein alter Excel-Hacker hier im forum. Hast schon sehr viele Beiträge geliefert! Toll!
lg,
Sam
AW: Outlook-Termine eines bestimmten Tages aufrufe
30.09.2004 21:09:26
Olli
Hallo Sam und Rainer,
vielen Dank erstmal für Eure Mühe und vor allem für diese rasche Hilfe ;o) Bin echt baff...das Forum ist echt spitze...werde die Codes gleich testen und mich dann nochmal melden...
Gruß
Olli
Anzeige
es funzt...vielen vielen Dank...Ihr seid SPITZE !!
30.09.2004 21:16:53
Olli
Olli
warum übernimmt er nicht mehrtätige Termine?
01.10.2004 13:34:55
Olli
Hallo...
nun habe ich doch noch eine Frage...warum findet er meine mehrtägigen Termine nicht mittels des Codes?
Gruß
Olli
Korrektur
sergiesam
Hi,
kleiner Irrtum: einfach ändern
Set termine = terminOrdner.Items.Restrict("[Start] >= '" & Datum & "' and [start] nicht end sondern 2x Start!
Achtung: Unter extras - optionen - Kalender wird eine Startzeit angegeben (standard 8:00 Uhr) Termine werden vor dieser Startzeit nicht gefunden. Warum? leider Keine Ahnung!
Sam
2. Korrektur
sergiesam
Hi,
damit der Fehler mit der Extras-Kalendereinstellungen nicht greift, musst du die Uhrzeit beim Datum als Format mitgeben.
Mit folgender Zeile findet er jetzt wirklich alles korrekt:
Set termine = terminOrdner.Items.Restrict("[Start] >= '" & Format(Datum, "mm""/""dd""/""yyyy hh:nn") & "' and [Start] also insgesamt:

Sub OutlookTerminEinlesen()
Dim outl, Datum As Long
Dim ns, terminOrdner, termine, termin As AppointmentItem
Set outl = CreateObject("Outlook.Application")
Set ns = outl.GetNamespace("MAPI")
Set terminOrdner = ns.GetDefaultFolder(9) 'olFolderCalendar
'Filtere Termine dieses Tages
Datum = Range("B1")
Set termine = terminOrdner.Items.Restrict("[Start] >= '" & Format(Datum, "mm""/""dd""/""yyyy hh:nn") & "' and [Start] <= '" & Format(Datum + 1, "mm""/""dd""/""yyyy hh:nn") & "'")
Range("A6").Activate
If Range("A6") <> "" Then Range(Range("A6"), Range("A6").End(xlDown)).EntireRow.Delete
For Each termin In termine
ActiveCell = termin.Subject
ActiveCell.Offset(0, 1) = termin.Start
ActiveCell.Offset(0, 2) = termin.End
ActiveCell.Offset(1, 0).Activate
Next termin
End Sub

Gruß,
Sam
Anzeige
AW: 2. Korrektur
Ramses
Hallo Sam,
haut bei mir nicht hin :-(
Wenn ich deine "Set Temine..." Anweisung verwende, kriege ich alle Termine in meinem Kalender ! ?
Ein Grundsätzliches Problem sehe ich in der Verwaltung der Serientermine in Outlook.
Tägliche Serientermine (z.B. täglich eine Woche lang) werden intern, wenn die Serie am Montag startet, für den Rest der Woche nicht mehr als Termin verwaltet !!!, sondern von Outlook einfach eingezeichnet (siehe GetRecurrencePattern). Erst wenn der Termin aus der Serie manuell gelöst wird (Bearbeiten - Dieses Serienelement) verwaltet Outlook diesen Termin an diesem Tag.
Gemäss der OL VBA - Hilfe, wäre es also gar nicht möglich !?, ein Serienelement eines Tages abzufragen, wenn die Serie vorher gestartet wurde. z.B. du frägst den Dienstag ab, die Serie startet aber schon am Montag. Der Startzeitpunkt und der Endzeitpunkt liegen nämlich nicht im abgefragten Bereich.
Irgendwie blicke ich da nicht mehr durch.
Gruss Rainer
Anzeige
Noch ein wichtiger Hinweis...
Ramses
Hallo Sam
Das "LateBinding" ist unter Office 2003 definitiv nicht zu verwenden, weil unsicher:
"..In Office Outlook 2003 befinden sich die Elemente im Items-Auflistungsobjekt nicht unbedingt in einer bestimmten Reihenfolge...."
Auszug aus der OLH von Outlook 2003. Hier sollte/muss umbeding "Early Binding" mit verweisen auf die Outlook Object Bibliothek verwendet werden, sonst kommt das ganze einer Wundertüte gleich, welchen Ordner du jetzt tatsächlich ansprichst :-)
Gruss Rainer
Nun aber auch noch ... :-)
Ramses
Hallo
nun habe ewig rumgepfrimmelt bis ich das blöde restrict endlich auf der Reihe hatte,... nun will ich's auch noch zeigen :-)

Sub Read_Control_Termin_to_Excel()
'by Ramses
Dim myR As Integer, i As Integer
Dim startDate As Date, endDate As Date, recDate As Date
Dim myOlApp As Object, myOlSpace As Object, myOlFolder As Object
Dim myOlDateRange As Object, sAppoint As Object
'Datum vorschlagen
Select Case Weekday(Now + 1, vbMonday)
Case Is > 5
recDate = Now + 3
Case Else
recDate = Now + 1
End Select
'Datum abfragen
startDate = Format(DateValue(InputBox("Welches Datum soll abgefragt werden ?" & Chr$(13) & _
"Datum muss im Format ""01.01.2004"" eingeben werden", "Terminsuche", Format(recDate, "dd.mm.yyyy"))))
'Alternativ
'startDate = ActiveSheet.Range("A1") 'Zelle mit Startdatum
'endAte = ActiveSheet.Range("B1") 'Zelle mit Enddatum
'Deklaration
Set myOlApp = CreateObject("Outlook.Application")
Set myOlSpace = myOlApp.GetNamespace("MAPI")
Set myOlFolder = myOlSpace.GetDefaultFolder(olFolderCalendar)
Set myOlDateRange = myOlFolder.Items.Restrict("[Start] >= '" & startDate & "' and [end] <= & '" & startDate + 1 & "'")
'Alternative mit Start- und Enddatum
'Set myOlDateRange = myOlFolder.Items.Restrict("[Start] >= '" & startDate & "' and [end] <= & '" & endDate & "'")
'Suche beginnen
myR = 2
'Löscht alle zellen in der aktiven Tabelle
Cells.ClearContents
Cells(1, 1) = "Termin"
Cells(1, 2) = "Dauer"
Cells(1, 3) = "Ende"
Cells(1, 4) = "Ort"
Cells(1, 5) = "Betreff"
Cells(1, 6) = "Textinfo"
'Alternativ mit Start- und EndDatum in Zeile 1
'Range(Cells(myR, 1), Cells(Rows.Count, 5)).ClearContents
'Cells(myR, 1) = "Termin"
'Cells(myR, 2) = "Dauer"
'Cells(myR, 3) = "Ort"
'Cells(myR, 4) = "Betreff"
'Cells(myR, 5) = "Textinfo"
'myR = myR + 1
For Each sAppoint In myOlDateRange
With sAppoint
'Termindaten eintragen
Cells(myR, 1) = Format(.Start, "dd.mm.yyyy hh:mm")
Cells(myR, 2) = .duration
Cells(myR, 3) = Format(.Start + (((1 / 24) / 60) * .duration), "hh:mm")
Cells(myR, 4) = .Location
Cells(myR, 5) = .Subject
Cells(myR, 6) = .Body
'Cells(myR, 6) = .Start
myR = myR + 1
End With
Next
'Variablen leeren
Set myOlApp = Nothing
Set myOlSpace = Nothing
Set myOlFolder = Nothing
MsgBox "Alle Termine für den " & startDate & " eingelesen!"
'Alternativ mit Start- und EndDatum
'MsgBox "Alle Termine für den Zeitraum vom " & startDate & " bis " & endDate & " eingelesen!"
End Sub

Gruss Rainer
Auch wenn Sam schon gezeigt, kann ich es wenigstens für meine HP brauchen ;-)
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige