Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
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-Termine

Outlook-Termine
01.10.2013 13:01:37
franky
Hallo zusammen,
leider habe ich es bis jetzt nicht geschafft, meine Datei:
https://www.herber.de/bbs/user/87490.xlsm
so zu erweitern, damit alle Serientermine erfasst werden. Dort werden nämlich keine sich wiederholenden Termine herausgeben.
Hier die Lösung:
Im folgenden Beispiel für Visual Basic für Applikationen (VBA) wird der Betreff der Termine, einschließlich wiederkehrender Termine, angezeigt, die von heute bis morgen stattfinden.
Sub DemoFindNext()
Dim myNameSpace As Outlook.NameSpace
Dim tdystart As Date
Dim tdyend As Date
Dim myAppointments As Outlook.Items
Dim currentAppointment As Outlook.AppointmentItem
Set myNameSpace = Application.GetNamespace("MAPI")
tdystart = VBA.Format(Now, "Short Date")
tdyend = VBA.Format(Now + 1, "Short Date")
Set myAppointments = myNameSpace.GetDefaultFolder(olFolderCalendar).Items
myAppointments.Sort "[Start]"
myAppointments.IncludeRecurrences = True
Set currentAppointment = myAppointments.Find("[Start] >= """ & _
tdystart & """ and [Start]  "Nothing"
MsgBox currentAppointment.Subject
Set currentAppointment = myAppointments.FindNext
Wend
End Sub

Im nachfolgenden Beispiel wird gezeigt, in welcher Reihenfolge Termine sortiert und gefiltert werden sollen, die Terminserien enthalten.
VBA
Sub SortAndFilterAppointments()
Dim myNameSpace As Outlook.NameSpace
Dim myAppointments As Outlook.Items
Set myNameSpace = Application.GetNamespace("MAPI")
Set calendarItems = myNameSpace.GetDefaultFolder(olFolderCalendar).Items
calendarItems.Sort "[Start]"
calendarItems.IncludeRecurrences = True
Set restrictedItems = calendarItems.Restrict("[Organizer]='Dan Wilson'")
End Sub
Wer kann mein Makro so erweitern bzw. umbauen, damit endlich alle Termine erfasst werden.
Ich danke jetzt schon allen, die mir helfen
Viele Grüße
Franky

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Outlook-Termine
01.10.2013 13:14:04
franky
Nochmal ein Nachtrag:
Der wesentliche Aspekt liegt in "IncludeRecurrences = True", was ist meinem Makro hinzugefügt werden muss.
Franky

AW: Outlook-Termine
02.10.2013 16:30:25
franky
noch offen !

AW: Outlook-Termine
03.10.2013 15:34:02
fcs
Hallo Franky,
füge 2 zusätzlichen Zeilen in deinem Code ein:
Debug.Print RestrText
myOlFolder.Items.Sort "[Start]"
myOlFolder.Items.IncludeRecurrences = True
Set myOlDateRange = myOlFolder.Items.Restrict(RestrText)
Gruß
Franz

AW: Outlook-Termine
04.10.2013 07:09:31
franky
Hallo Franz,
erst einmal vielen Dank für Deine Hilfe. Ich habe die zwei Zeilen eingefügt.
Allerdings werden wie früher nur die "normalen Termine" angezeigt. Die Serientermine
erscheinen nicht auf dem Aufgabenblatt.
Ich hoffe, Du findest den Fehler noch !
Vielen Dank im voraus,
Franky

Anzeige
AW: Outlook-Termine eines Kalendertags
04.10.2013 17:48:55
fcs
Hallo Franky,
ich hab jetzt nochmals rumprobiert und intensiver getestet (Jahrestage, wöchentlicher Besprechungstermin, Termin über Mitternacht, Dienstreise ganzer Tag, mehrer Termine an einem Tag, Urlaub über mehrere Tage, mehrtägiger Termin mit Start-/Endzeit).
Ein wesentliches Problem waren ganztägige Termine. Diese wurden zunächste immer am Vortag gelistet.
Ich hab jetzt die Suche so aufgebaut, dass in einer Beschränkug zunächst alle Termine gefunden werden, die
a) am Vortag oder aktuelen Tag stattfinden oder
b) vor oder am aktuellen Tag beginnen und nach oder am aktuellen Tag enden.
Diese wurden dann auf ganztäg geprüft
Die nicht ganztägen werden dann nochmals auf das Datum geprüft, um Termine um Datumswechsel sowie nehrtägige Termine zu erkennen.
Viel Puzzlearbeit, aber ich hoffe, dass es jetzt auch bei dir funktioniert.
Gruß
Franz
Sub Read_Control_Terminrange_to_Excel()
'by Ramses - extremely modified by fcs 2013-10.04
'Zeitraumabfrage über Startdatum = A1 und Enddatum = B1
'Verweis auf Outlook 11 Library im VB-Editor muss gesetzt sein
'Early Binding ab Outlook 2003 nicht möglich
'weil die Rückgabewerte der ITEM-Indexes zufällig ist und von der
'Installation abhängt !!
Dim myR As Integer, i As Integer
Dim startDate As Date, endDate As Date
Dim myOlApp As Object, myOlSpace As Object, myOlFolder As Object
Dim myOlAppointments As Object, myOlAppointment As Outlook.AppointmentItem
Dim TerminPlatz As Range
Dim RestrText As String
Dim bolEintragen As Boolean
'Termin Einträge
Set TerminPlatz = Sheets("Druck_Kalender").Range("A4")
myR = 0
'Löscht Terminbereich
TerminPlatz.Resize(12, 4).ClearContents
'Datum abfragen
With Sheets("Druck_Kalender").Range("B2")
startDate = .Value
endDate = .Value + 1
End With
'Datenbereich abfragen
RestrText = "([Start] >= '" & VBA.Format(startDate - 1, "ddddd") _
& "' AND [Start] = '" & VBA.Format(startDate, "ddddd") & "')"
'Debug.Print RestrText
'Deklaration
Set myOlApp = CreateObject("Outlook.Application")
Set myOlSpace = myOlApp.GetNamespace("MAPI")
Set myOlFolder = myOlSpace.GetDefaultFolder(olFolderCalendar)
Set myOlAppointments = myOlSpace.GetDefaultFolder(olFolderCalendar).Items
myOlAppointments.Sort "[Start]"
myOlAppointments.IncludeRecurrences = True
Set myOlAppointment = myOlAppointments.Find(RestrText)
While TypeName(myOlAppointment)  "Nothing"
bolEintragen = False
With myOlAppointment
Select Case .AllDayEvent
Case True
'ganztägige Termine - Urlaub, Dienstreisen etc
If (.Start >= CDate(startDate) And .End = CDate(endDate)) Then
'Termindaten eintragen
TerminPlatz.Offset(myR, 0) = "ganzer Tag"
bolEintragen = True
End If
Case False
'Termine mit Zeitangaben
If (.Start >= CDate(startDate) And .End  Format(.End, "DD.MM.YYYY") Then
If Day(.Start) = Day(startDate) And Day(.End) = Day(endDate) Or _
Day(.Start) = Day(startDate - 1) And Day(.End) = Day(startDate) Then
'Termin mit Beginn vor und Ende nach Mitternacht
If Day(startDate) = Day(.Start) Then
TerminPlatz.Offset(myR, 0) = _
Format(.Start, "hh:mm") & " - " & Format(.End, "hh:mm")
Else
TerminPlatz.Offset(myR, 0) = _
"*00:00 - " & Format(.End, "hh:mm")
End If
bolEintragen = True
ElseIf (CDate(Format(.Start, "YYYY-MM-DD")) = startDate) Then
'Termin über mehrere Tage mit Start und Ende Zeit
If startDate = CDate(Format(.Start, "YYYY-MM-DD")) Then
'Starttag
TerminPlatz.Offset(myR, 0) = _
Format(.Start, "hh:mm") & " - 00:00*"
ElseIf startDate = CDate(Format(.End, "YYYY-MM-DD")) Then
'Endetag
TerminPlatz.Offset(myR, 0) = _
"*00:00 - " & Format(.End, "hh:mm")
Else
TerminPlatz.Offset(myR, 0) = "mehrtägig"
End If
bolEintragen = True
End If
End If
End Select
If bolEintragen = True Then
TerminPlatz.Offset(myR, 1) = .Subject
myR = myR + 1
If myR > 12 Then MsgBox "zu viele Termine - Format wird unschön"
End If
End With
Set myOlAppointment = myOlAppointments.FindNext
Wend
'Variablen leeren
Set myOlApp = Nothing
Set myOlSpace = Nothing
Set myOlFolder = Nothing
Set myOlAppointments = Nothing
Set myOlAppointment = Nothing
MsgBox "Alle Termine  im Zeitraum vom " & Format(startDate, "DD.MM.YYYY hh:mm") _
& " bis " & Format(endDate - TimeSerial(0, 1, 0), "DD.MM.YYYY hh:mm") & " eingelesen!"
End Sub

Anzeige
AW: Outlook-Termine eines Kalendertags
04.10.2013 19:20:40
franky
Hallo Franz,
ich könnte heulen vor Freude. Es funktioniert alles bestens. In der Regel benutze ich nur
Serientermine, die sich wöchentlich wiederholen. Nicht´s desto trotz, kann es nicht schaden,
daß alle Termine jetzt aufgelistet werden.
Nochmals vielen herzlichen Dank für Deine Mühe.
Alles Gute,
Franky

AW: Outlook-Termine eines Kalendertags
08.10.2013 11:23:50
franky
Hallo Franz,
Dein Makro funktiuniert einwandfrei. Allerdings wenn ich das Datum per Button eintrage, bekomme ich
immer eine Fehlermeldung in "'endDate = .Value + 1".
Habe schon mehrere Sachen ausprobiert, finde jedoch den Fehler nicht.
Ich habe die aktuelle Datei noch mal hochgeladen.
https://www.herber.de/bbs/user/87571.xlsm
Ich hoffe, Du kannst den Fehler beheben.
Vielen Dank im voraus
Franky
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige