Live-Forum - Die aktuellen Beiträge
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 *Nachtrag*

Outlook-Termine eines bestimmten Tages *Nachtrag*
01.10.2004 17:12:14
Olli
Hallo liebe Forumsgemeinde und insbesondere Sam und Rainer,
hatte gestern einen Beitrag gefasst wo es um das Importieren von bestimmten Outlook-Terminen nach Excel ging. Da kamen superschnell rettende Tips..u.a. mit dem folgenden Code von Sam:

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

Dazu habe ich aber wider Erwarten doch noch eine Frage...warum findet er meine mehrtägigen und ganztägigen Termine nicht ? Eintägige Termine mit eingeschränkter Zeitangabe werden importiert, aber weder ganztägige noch mehrtägige Termine. Wie kann ich die noch hinzubekommen?
Bin mir nicht sicher, ob ich jetzt noch einen neuen Beitrag schreiben durfte oder es gegen die Regeln hier verstößt...wenn letzteres der Fall ist, dann entschuldige ich mich schon mal im Voraus....bin in diesen Dingen nicht so sehr bewandert.....
Gruß
Olli

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Outlook-Termine eines bestimmten Tages *Nachtrag*
Ramses
Hallo Olli
nimm mal diese Variante.
Die Termine werden zwar nicht dargestellt, aber der entsprechende Termin wird markiert und das entsprechende Enddatum eingetragen.


Option Explicit
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, extDate As Date
Dim myOlApp As Object, myOlSpace As Object, myOlFolder As Object
Dim myOlDateRange As Object, sAppoint As Object
Dim extRecurr 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"))))
endDate = startDate
'Alternativ
'startDate = ActiveSheet.Range("A1") 'Zelle mit Startdatum
'endDate = ActiveSheet.Range("B1") 'Zelle mit Enddatum
'Deklaration
Set myOlApp = CreateObject("Outlook.Application")
Set myOlSpace = myOlApp.GetNamespace("MAPI")
Set myOlFolder = myOlSpace.GetDefaultFolder(olFolderCalendar)
'Einträge ab Zeile 2
myR = 2
'Löscht alle zellen in der aktiven Tabelle
Cells.ClearContents
Cells.Interior.ColorIndex = xlNone
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
'Range(Cells(myR, 1), Cells(Rows.Count, 5)).Interior.colorindex = xlNone
'Cells(myR, 1) = "Termin"
'Cells(myR, 2) = "Dauer"
'Cells(myR, 3) = "Ende"
'Cells(myR, 4) = "Ort"
'Cells(myR, 5) = "Betreff"
'Cells(myR, 6) = "Textinfo"
'myR = myR + 1
'-------
'Prüfung ob bei einem Termin ein Wiederholungs Termin mit Enddatum
'ausserhalb des Bereichs der ursprünglichen Abfrage (endDate) liegt
'Abfragebereich allenfalls neu definieren
If startDate = endDate Then
    endDate = startDate + 10
End If
'Abfragebereich definieren
Set myOlDateRange = myOlFolder.Items.Restrict("[Start] >= '" & startDate & "' and [end] <= & '" & endDate & "'")
'Alternative mit Start- und Enddatum
'Set myOlDateRange = myOlFolder.Items.Restrict("[Start] >= '" & startDate & "' and [end] <= & '" & endDate & "'")
For Each sAppoint In myOlDateRange
    With sAppoint
        'Termindaten eintragen
        Cells(myR, 1) = Format(.Start, "dd.mm.yyyy hh:mm")
        Cells(myR, 2) = Format((((1 / 24) / 60) * .Duration), "hh:mm")
        Set extRecurr = .GetRecurrencePattern
        If Format(extRecurr.PatternEndDate, "dd.mm.yyyy") <> Format(DateValue("31.12.4500"), "dd.mm.yyyy") Then
            Cells(myR, 3) = Format(DateValue(extRecurr.PatternEndDate), "dd.mm.yyyy")
            Cells(myR, 3).Interior.ColorIndex = 3
            Cells(myR, 7) = "Täglich für " & DateValue(Format(extRecurr.PatternEndDate, "dd.mm.yyyy")) - startDate & " Tage"
        Else
            Cells(myR, 3) = Format(.Start + (((1 / 24) / 60) * .Duration), "hh:mm")
        End If
        Cells(myR, 4) = .Location
        Cells(myR, 5) = .Subject
        Cells(myR, 6) = .Body
        myR = myR + 1
    End With
Next
'Variablen leeren
Set myOlApp = Nothing
Set myOlSpace = Nothing
Set myOlFolder = Nothing
MsgBox "Alle Termine für den Zeitraum vom " & startDate & " bis " & endDate & " eingelesen!"
'Alternativ mit Start- und EndDatum
'MsgBox "Alle Termine für den Zeitraum vom " & startDate & " bis " & endDate & " eingelesen!"
End Sub


Gruss Rainer
Anzeige
AW: Outlook-Termine eines bestimmten Tages *Nachtrag*
Ramses
Hallo
kleiner Testlapsus :-)
If startDate = endDate Then
endDate = startDate + 10
End If
muss natürlich heissen
If startDate = endDate Then
endDate = startDate + 1
End If
für die Abfrage über die Inputbox
Gruss Rainer
werde ich gleich mal testen....
02.10.2004 12:38:06
Olli
Hallo Rainer....
sorry, aber die Grippe hat mich gestern doch noch hingerafft...werde jetzt aber gleich mal testen und mich wieder melden ;o)
Gruß
Olli
nee..irgendwie klappt das nicht
02.10.2004 12:48:31
Olli
Hallo Rainer,
hab´s mal getestet, aber irgendwie klappt das nicht.
Die MSG-Box sagt mir zwar, dass er die Termine von...bis...(also schon richtig erkannt irgendwo) eingefügt hat, aber in der Tabelle taucht nix auf...es ist auch nix markiert oder sonst was.....hast Du noch eine Idee?
Gruß
Olli
Anzeige
Kleine Anpassung...
Ramses
Hallo
Den Code habe ich gestern schnell auf dem Flughafen beim warten auf einen Flieger geschrieben :-), deshalb keine grosse Zeit gehabt zum testen.
Es ist das gleiche Problem wie bei Sergiesam, das END muss 1 Tag grösser sein als das Startdatum, dafür erfolgt die Abfrage "&lt endDate"
Probier mal, bei mir holt er jetzt alles rein,... mit AUSNAHME von Terminserien wo das Startdatum VOR dem Abfragedatum liegt.
Das kriege ich irgendwie nicht auf die Reihe, weil Outlook die Terminserien andes verwaltet als einzelne Termine.


Option Explicit
Sub Read_Control_Termin_to_Excel()
'by Ramses
'Datumsabfage über Inputbox
'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, recDate As Date, extDate As Date
Dim myOlApp As Object, myOlSpace As Object, myOlFolder As Object
Dim myOlDateRange As Object, sAppoint As Object
Dim extRecurr As Object
Dim strRecurr As String
'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"))))
endDate = startDate
'Deklaration
Set myOlApp = CreateObject("Outlook.Application")
Set myOlSpace = myOlApp.GetNamespace("MAPI")
Set myOlFolder = myOlSpace.GetDefaultFolder(olFolderCalendar)
'Einträge ab Zeile 2
myR = 2
'Löscht alle zellen in der aktiven Tabelle
Cells.ClearContents
Cells.Interior.ColorIndex = xlNone
Cells(1, 1) = "Termin"
Cells(1, 2) = "Dauer"
Cells(1, 3) = "Ende"
Cells(1, 4) = "Ort"
Cells(1, 5) = "Betreff"
Cells(1, 6) = "Textinfo"
Set myOlDateRange = myOlFolder.Items.Restrict("[Start] >= '" & startDate & "' And [End] < & '" & endDate + 1 & "'")
For Each sAppoint In myOlDateRange
    With sAppoint
        'Termindaten eintragen
        Cells(myR, 1) = Format(.Start, "dd.mm.yyyy hh:mm")
        Cells(myR, 2) = Format((((1 / 24) / 60) * .Duration), "hh:mm")
        Set extRecurr = .GetRecurrencePattern
        'OlRecurrenceType sein:
        'olRecursDaily = 1
        'olRecursMonthly = 2
        'olRecursMonthNth = 3
        'olRecursWeekly = 4
        'olRecursYearly = 5
        'olRecursYearNth = 6
        Select Case extRecurr.RecurrenceType
            Case 1
                strRecurr = "Täglich für "
            Case 2
                strRecurr = "Monatlich für "
            Case 3
                strRecurr = "Monatlich jeden "
            Case 4
                strRecurr = "Wöchentlich für "
            Case 5
                strRecurr = "Jährlich für "
            Case 6
                strRecurr = "Jährlich jeden "
        End Select
        If Format(extRecurr.PatternEndDate, "dd.mm.yyyy") <> Format(DateValue("31.12.4500"), "dd.mm.yyyy") Then
            Cells(myR, 3) = Format(DateValue(extRecurr.PatternEndDate), "dd.mm.yyyy")
            Cells(myR, 3).Interior.ColorIndex = 3
            Cells(myR, 7) = strRecurr & DateValue(Format(extRecurr.PatternEndDate, "dd.mm.yyyy")) - startDate + 1 & " Tage"
        Else
            Cells(myR, 3) = Format(.Start + (((1 / 24) / 60) * .Duration), "hh:mm")
        End If
        Cells(myR, 4) = .Location
        Cells(myR, 5) = .Subject
        Cells(myR, 6) = .Body
        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!"
End Sub
Sub Read_Control_Terminrange_to_Excel()
'by Ramses
'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, recDate As Date, extDate As Date
Dim myOlApp As Object, myOlSpace As Object, myOlFolder As Object
Dim myOlDateRange As Object, sAppoint As Object
Dim extRecurr As Object
Dim strRecurr As String
'Datum abfragen
startDate = Range("A1")
endDate = Range("B1")
'Deklaration
Set myOlApp = CreateObject("Outlook.Application")
Set myOlSpace = myOlApp.GetNamespace("MAPI")
Set myOlFolder = myOlSpace.GetDefaultFolder(olFolderCalendar)
'Einträge ab Zeile 3
myR = 3
'Löscht alle zellen in der aktiven Tabelle
Cells.ClearContents
Cells.Interior.ColorIndex = xlNone
'oder alle Zellen im Bereich bis Spalte G
'Range("A:G").ClearContents
'Range("A:G").Interior.ColorIndex = xlNone
Cells(1, 1) = startDate
Cells(1, 2) = endDate
Cells(myR - 1, 1) = "Termin"
Cells(myR - 1, 2) = "Dauer"
Cells(myR - 1, 3) = "Ende"
Cells(myR - 1, 4) = "Ort"
Cells(myR - 1, 5) = "Betreff"
Cells(myR - 1, 6) = "Textinfo"
'Datenbereich abfragen
Set myOlDateRange = myOlFolder.Items.Restrict("[Start] >= '" & startDate & "' And [End] < & '" & endDate + 1 & "'")
For Each sAppoint In myOlDateRange
    With sAppoint
        'Termindaten eintragen
        Cells(myR, 1) = Format(.Start, "dd.mm.yyyy hh:mm")
        Cells(myR, 2) = Format((((1 / 24) / 60) * .Duration), "hh:mm")
        Set extRecurr = .GetRecurrencePattern
        'OlRecurrenceType sein:
        'olRecursDaily = 1
        'olRecursMonthly = 2
        'olRecursMonthNth = 3
        'olRecursWeekly = 4
        'olRecursYearly = 5
        'olRecursYearNth = 6
        Select Case extRecurr.RecurrenceType
            Case 1
                strRecurr = "Täglich für "
            Case 2
                strRecurr = "Monatlich für "
            Case 3
                strRecurr = "Monatlich jeden "
            Case 4
                strRecurr = "Wöchentlich für "
            Case 5
                strRecurr = "Jährlich für "
            Case 6
                strRecurr = "Jährlich jeden "
        End Select
        If Format(extRecurr.PatternEndDate, "dd.mm.yyyy") <> Format(DateValue("31.12.4500"), "dd.mm.yyyy") Then
            Cells(myR, 3) = Format(DateValue(extRecurr.PatternEndDate), "dd.mm.yyyy")
            Cells(myR, 3).Interior.ColorIndex = 3
            Cells(myR, 7) = strRecurr & DateValue(Format(extRecurr.PatternEndDate, "dd.mm.yyyy")) - startDate + 1 & " Tage"
        Else
            Cells(myR, 3) = Format(.Start + (((1 / 24) / 60) * .Duration), "hh:mm")
        End If
        Cells(myR, 4) = .Location
        Cells(myR, 5) = .Subject
        Cells(myR, 6) = .Body
        myR = myR + 1
    End With
Next
'Variablen leeren
Set myOlApp = Nothing
Set myOlSpace = Nothing
Set myOlFolder = Nothing
MsgBox "Alle Termine  im Zeitraum vom " & startDate & " bis " & endDate & " eingelesen!"
End Sub


Gruss Rainer
Anzeige
nix...geht nicht...
02.10.2004 20:40:31
Olli
also ich versteh es nicht...habe da nun am 28.09.2004 einen mehrtägigen Termin (-30.09.2004) und einen normalen Termin (08:30 - 09:00). Bei dem neuen Code liest er mir auch nur Letzteren ein...hat sich nix geändert....grübel...rätsel...
P.S.: mal eben so beim Warten auf den Flieger? Oh Mann...wenn ich mal soweit wäre für das mal eben... ;o)
Schau mal...
Ramses
Hallo
in der Forumssuche nach "@Olli".
Dort ist ein komplett neuer Code für dich hinterlegt mit einer Beispieltabelle.
Mehr geht nicht.
Gruss Rainer
AW: gesehen..getestet und gejubelt ;o) Danke
03.10.2004 19:14:29
Olli
danke ;o)

82 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige