VBA Outlook 2013 - Kontakte einer Verteilerliste hinzufügen oder entfernen

  • Outlook

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von All93rounder.

    VBA Outlook 2013 - Kontakte einer Verteilerliste hinzufügen oder entfernen

    Hallo,

    ich versuche verzweifelt seit einigen Wochen eine automatisierte Verteilerliste zu pflegen... Klingt komplexer als es eigentlich ist, aber leider scheitere ich in der letzten Instanz.
    Der folgende Ablauf funktioniert soweit:
    • Ich versende eine Einladung mit einem Mailto-Link in dem ich den Betreff auf [VeranstalltungA] setzte.
    • Ein interessierter Teilnehmer sendet mir die Mail mit dem passenden Betreff zurück.
    • Ich filtere nach dem Betreff und übergebe die Mail einem Makro.
    • Das Makro entnimmt den Absender (Name und Mail) und übergibt dies einem weiteren Sub (nachfolgender Code)
    Nun habe ich die letzten Wochen damit verbracht den zweiten Teil zu bauen. Ich möchte aus meiner Verteilerliste "Lasertag" alle Member durchsuchen und ...
    • falls der gesuchte Member enthalten ist, soll dieser entfernt werden oder
    • falls der gesuchte Member nicht enthalten ist, soll dieser hinzugefügt werden mit seiner Mailadresse.
    Soweit erhalte ich auch meine Member des Verteilers und kann nach ihnen suchen bzw. bestimmte Aktionen ausführen. Leider komm ich nun nicht weiter bei der Entfernung oder Eintragung des Absenders, da die Änderung nicht gespeichert wird... Hier mal mein bisheriger Code, kann mir jemadn dabei weiterhelfen?

    VB.NET-Quellcode

    1. Sub DisplayYourDLNames()
    2. Dim myNameSpace As Outlook.NameSpace
    3. Dim objRcpnt As Outlook.Recipient
    4. Dim myFolder As Outlook.Folder
    5. Dim myDistList As Outlook.DistListItem
    6. Dim myFolderItems As Outlook.Items
    7. Dim x As Integer
    8. Dim y As Integer
    9. Dim iCount As Integer
    10. Set user = "Mustermann, Max"
    11. Set myNameSpace = Application.GetNamespace("MAPI")
    12. Set myFolder = myNameSpace.GetDefaultFolder(olFolderContacts)
    13. Set myFolderItems = myFolder.Items
    14. iCount = myFolderItems.Count
    15. For x = 1 To iCount
    16. a = TypeName(myFolderItems.Item(x))
    17. If a = "DistListItem" Then
    18. Set myDistList = myFolderItems.Item(x)
    19. If myDistList = "LaserTag" Then
    20. Set UserFound = 0
    21. For y = 1 To myDistList.MemberCount
    22. CurrentUser = myDistList.GetMember(y)
    23. If user = CurrentUser Then
    24. Set UserFound = 1
    25. Set objMail = Application.CreateItem(olMailItem)
    26. Set objRcpnt = objMail.Recipients.Add(user)
    27. objRcpnt.Resolve
    28. myDistList.RemoveMember Recipient:=objRcpnt
    29. 'Senden einer Mail an den Ausgetragenen
    30. End If
    31. Next y
    32. If UserFound = 0 Then
    33. Set objRcpnt = Application.Session.CreateRecipient(user)
    34. myDistList.AddMember objRcpnt
    35. myDistList.Save
    36. 'Senden einer Mail an den Eingetragenen
    37. End If
    38. End If
    39. End If
    40. Next x
    41. End Sub


    Ich danke für eure Antworten und eventuelle Lösungsansetzte!

    Gruß Chris

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „All93rounder“ ()

    Hallo,

    wenn das RemoveMember richtig angewendet wird, dann fehlt nur noch das Speichern. Da ich kein Outlook zu Hause habe, kann ich das nicht testen. Ich würde nach dem RemoveMember und SAVE die Liste noch mal durchgehen, ob der tatsächlich entfernt wurde.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Hallo,

    okay das löschen funktioniert mit kleiner Anpassung und mit wenn es nur einen Max, Mustermann gibt. Wie binde ich den beim eintragen und austragen die Mailadresse mit ein? Denn das eintragen funktioniert nur mit namen wohl nicht...

    VB.NET-Quellcode

    1. Sub DisplayYourDLNames()
    2. Dim myNameSpace As Outlook.NameSpace
    3. Dim objRcpnt As Outlook.Recipient
    4. Dim myFolder As Outlook.Folder
    5. Dim myDistList As Outlook.DistListItem
    6. Dim myFolderItems As Outlook.Items
    7. Dim x As Integer
    8. Dim y As Integer
    9. Dim iCount As Integer
    10. user = "Mustermann, Max"
    11. Set myNameSpace = Application.GetNamespace("MAPI")
    12. Set myFolder = myNameSpace.GetDefaultFolder(olFolderContacts)
    13. Set myFolderItems = myFolder.Items
    14. iCount = myFolderItems.Count
    15. For x = 1 To iCount
    16. a = TypeName(myFolderItems.Item(x))
    17. If a = "DistListItem" Then
    18. Set myDistList = myFolderItems.Item(x)
    19. If myDistList = "LaserTag" Then
    20. UserFound = 0
    21. UserCount = myDistList.MemberCount
    22. For y = 1 To UserCount
    23. CurrentUser = myDistList.GetMember(y)
    24. If user = CurrentUser Then
    25. UserFound = 1
    26. Set objMail = Application.CreateItem(olMailItem)
    27. Set objRcpnt = objMail.Recipients.Add(user)
    28. objRcpnt.Resolve
    29. myDistList.RemoveMember Recipient:=objRcpnt
    30. 'myDistList.Save
    31. UserCount = UserCount - 1
    32. y = y - 1
    33. End If
    34. If UserCount <= y Then Exit For
    35. Next y
    36. If UserFound = 0 Then
    37. Set objRcpnt = Application.Session.CreateRecipient(user)
    38. myDistList.AddMember objRcpnt
    39. End If
    40. End If
    41. End If
    42. Next x
    43. End Sub
    Es fehlt noch folgender Codeschnipsel

    VB.NET-Quellcode

    1. Set objMail = Application.CreateItem(olMailItem)

    Nun klappt auch das eintragen, aber leider nur per Namen.

    --
    Kann mir jemand sagen, wie ich ein "objRcpnt " mit Namen und Mail erzeuge? Damit ich beim eintragen in die Verteilerliste auch eine Email-Adresse hinterlege. Nicht nur einen Namen ;-)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „All93rounder“ ()