Outlook Geburtstagsliste

  • Outlook

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von debus.

    Outlook Geburtstagsliste

    Hallo,

    ich suche nach einer Möglichkeit in Outlook per Makro alle Geburtstagstage der nächsten x Tage in einer Liste anzuzeigen.

    Hat da jemand vielleicht einen Ansatz für mich?

    Ich habe mir das auch per vb.net schon angeschaut und mir dieses hier angeschaut Outlook Kalender auslesen(heutige Termine)

    Leider kommt da immer ein Problem bei

    VB.NET-Quellcode

    1. Imports Microsoft.Office.Interop.Outlook


    Wie kann ich da weiterkommen?


    Danke
    Holger



    Also mein Ansatz sieht nun wie folgt aus


    VB.NET-Quellcode

    1. Sub FindApptsInTimeFrame()
    2. Dim myStart As Date
    3. Dim myEnd As Date
    4. Dim oCalendar As Outlook.folder
    5. Dim oItems As Outlook.items
    6. Dim oResItems As Outlook.items
    7. Dim oAppt As Outlook.AppointmentItem
    8. Dim strRestriction As String
    9. myStart = Date
    10. myEnd = DateAdd("d", 5, myStart)
    11. Debug.Print "Start:", myStart
    12. Debug.Print "End:", myEnd
    13. Set oCalendar = Application.session.GetDefaultFolder(olFolderCalendar)
    14. Set oItems = oCalendar.items
    15. oItems.IncludeRecurrences = True
    16. oItems.Sort "[Start]"
    17. strRestriction = "[Start] <= '" & Format$(myEnd, "mm/dd/yyyy hh:mm AMPM") _
    18. & "' AND [End] >= '" & Format(myStart, "mm/dd/yyyy hh:mm AMPM") & "'"
    19. Debug.Print strRestriction
    20. 'Restrict the Items collection
    21. Set oResItems = oItems.Restrict(strRestriction)
    22. For Each oAppt In oResItems
    23. Debug.Print oAppt.Start, oAppt.Subject
    24. Next
    25. End Sub



    Nun will noch versuchen, das ganze in einem UserForm anzuzeigen.

    Ich glaube das ListView ist das beste. Aber wie befülle ich das?
    Was muss ich hier anstelle dieser Zeile schreiben?

    VB.NET-Quellcode

    1. Debug.Print oAppt.Start, oAppt.Subject



    Danke
    Holger

    Beiträge zusammengefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Danke gerne, habe auch schon etwas aber ich krieg da auch immer noch ein Problem mit den Makro Einstellungen weil unsere Gruppenrichtlinien da Probleme machen. Aber immer erst nach den Speichen weg ich es einfüge geht es nach den Speichern kommt das eine Meldung weil das Makro nicht zertifiziert ist. Kann ich morgen mal posten bin jetzt nicht mehr an Arbeitsrechner

    danke
    Holger

    debus schrieb:

    Aber immer erst nach den Speichen weg ich es einfüge geht es nach den Speichern kommt das eine Meldung weil das Makro nicht zertifiziert ist.


    Ich schätze, da wirst Du Dir von Deiner IT ein "Code-Signing"- Zertifikat ausstellen lassen müssen, mit dem Du dann Deinen Code signierts. (Geht dann über die VBA - Optionen)
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Ja das denke ich auch. Auf den Arbeitsrechnern, wo ich das benötige sind andere Richtlinien. Hatte nur gestern Abend keinen Rechner davon mehr zur Hand

    trotzdem danke
    Holger

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „debus“ ()

    mumpel schrieb:

    Ich kann morgen mal ein Beispiel zu einem meiner Projekte verlinken.


    Hallo mumpel,

    hast Du was finden können?

    Danke
    Holger


    Ich befülle mir die ListBox wie folgt, aber vielleicht geht es ja noch besser:

    VB.NET-Quellcode

    1. ​Private Sub cmdListe_Click()
    2. Dim myStart As Date
    3. Dim myEnd As Date
    4. Dim oCalendar As Outlook.Folder
    5. Dim oItems As Outlook.Items
    6. Dim oResItems As Outlook.Items
    7. Dim oAppt As Outlook.AppointmentItem
    8. Dim strRestriction As String
    9. Dim termin As String
    10. Dim Filter As String
    11. Dim Tage As String
    12. Tage = Me.TextBox1
    13. If Tage > 7 Then
    14. MsgBox "maximal eine Woche Tae wird auf 7 geändert"
    15. Me.TextBox1 = 7
    16. Tage = 7
    17. End If
    18. myStart = Date
    19. myEnd = DateAdd("d", Tage, myStart)
    20. Debug.Print "Start:", myStart
    21. Debug.Print "End:", myEnd
    22. Set oCalendar = Application.Session.GetDefaultFolder(olFolderCalendar)
    23. Set oItems = oCalendar.Items
    24. oItems.IncludeRecurrences = False
    25. oItems.Sort "[Start]"
    26. strRestriction = "[Start] <= '" & Format$(myEnd, "mm/dd/yyyy hh:mm AMPM") _
    27. & "' AND [End] >= '" & Format(myStart, "mm/dd/yyyy hh:mm AMPM") & "'"
    28. Debug.Print strRestriction
    29. Set oResItems = oItems.Restrict(strRestriction)
    30. ListBox1.Clear
    31. For Each oAppt In oResItems
    32. Filter = Left(oAppt.Subject, 4)
    33. If Filter = "Test" Then
    34. termin = oAppt.Start & " | " & oAppt.Subject
    35. 'Debug.Print oAppt.Start, oAppt.Subject
    36. ListBox1.AddItem termin
    37. End If
    38. Next
    39. End Sub


    Das ganze dann in einem UserForm und auch die Möglichkeit zum Drucken ist gegeben.


    Danke
    Holger

    debus schrieb:

    Ich befülle mir die ListBox wie folgt, aber vielleicht geht es ja noch besser:

    Besser geht es nicht. Bei mir ist es komplizierter, da dauert es doch etwas länger bis ich ein Beispiel "rausgezogen" haben.