Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
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
Globale Adressliste mit Filter ansprechen
09.08.2023 13:38:42
Kalle
Werte Gemeinde,

trotz intensiver Recherchen muss ich mich in einer Frage an Eure Expertise wenden.

Problem:
Ich lese per SelectNamesDialog diverse Verteilerlisten aus der Globalen Adressliste (GAL) aus. Leider entsprechen nicht alle Verteilerlisten dem gleichen Listentyp, so dass ich über die Namensauflösung eine initiale Adressliste generieren muss. Heißt: alle GAL-Einträge mit der Bezeichnung "Verteiler" im Namen sollen im SelectNamesDialog angezeigt werden. Das gelingt in Outlook mühelos, wenn man über Erweiterte Suche "Verteiler" im Feld des Anzeigenamens eingibt. Mein Ansatz sieht derzeit so aus, streikt aber bei der Deklaration der gefilterten Listeneinträge als neue Liste (Laufzeitfehler 91).



Sub GALVerteilerfilter()
Dim outlApp As Outlook.Application
Dim outlNameSpace As Outlook.Namespace
Dim SND As SelectNamesDialog
Dim GAL As Outlook.AddressList
Dim GALEntries As Outlook.AddressEntries
Dim GALMember As Outlook.AddressEntry
Dim VTList As Outlook.AddressList
Dim VTListEntries As Outlook.AddressEntries
Const VTString As String = "Verteiler"
Dim VTEntries As String
Dim i As Long

Set outlApp = New Outlook.Application
Set outlNameSpace = outlApp.GetNamespace("MAPI")
Set SND = Outlook.session.GetSelectNamesDialog
Set GAL = outlNameSpace.GetGlobalAddressList()
Set GALEntries = GAL.AddressEntries

'Schleife durch alle Einträge in der GAL
For i = 1 To GALEntries.Count

Set GALMember = GALEntries.Item(i)

'prüfe, ob Eintrag die Namensbezeichnung "Verteiler" enthält
If InStr(GALMember.Name, VTString) > 0 Then

'fasse Einträge mit Bezeichner "Verteiler" in einem Listen-String zusammen
VTEntries = VTEntries & GALMember.Name & vbCrLf

End If

Next i

'kurze Überprüfung, ob Items korrekt gefiltert und in String geschrieben wurden
Debug.Print VTEntries

'erzeuge neue Adressliste mit Items, deren Namensbezeichnung "Verteiler" enthält
'--> hier kommt der Laufzeitfehler 91 :(
Set VTList = VTListEntries.AddressEntries.Add(VTEntries)

'zeige Auswahldialog mit InitialListe aller Einträge mit der Bezeichnung "Verteiler"
SND.InitialAddressList = VTList
SND.Recipients = Nothing
SND.NumberOfRecipientSelectors = Outlook.OlRecipientSelectors.olShowTo
SND.ToLabel = "Verteiler hinzufügen"
SND.ShowOnlyInitialAddressList = True
SND.AllowMultipleSelection = True

End Sub
Sub GALVerteilerfilter() Dim outlApp As Outlook.Application Dim outlNameSpace As Outlook.Namespace Dim SND As SelectNamesDialog Dim GAL As Outlook.AddressList Dim GALEntries As Outlook.AddressEntries Dim GALMember As Outlook.AddressEntry Dim VTList As Outlook.AddressList Dim VTListEntries As Outlook.AddressEntries Const VTString As String = "Verteiler" Dim VTEntries As String Dim i As Long Set outlApp = New Outlook.Application Set outlNameSpace = outlApp.GetNamespace("MAPI") Set SND = Outlook.session.GetSelectNamesDialog Set GAL = outlNameSpace.GetGlobalAddressList() Set GALEntries = GAL.AddressEntries 'Schleife durch alle Einträge in der GAL For i = 1 To GALEntries.Count Set GALMember = GALEntries.Item(i) 'prüfe, ob Eintrag die Namensbezeichnung "Verteiler" enthält If InStr(GALMember.Name, VTString) > 0 Then 'fasse Einträge mit Bezeichner "Verteiler" in einem Listen-String zusammen VTEntries = VTEntries & GALMember.Name & vbCrLf End If Next i 'kurze Überprüfung, ob Items korrekt gefiltert und in String geschrieben wurden Debug.Print VTEntries 'erzeuge neue Adressliste mit Items, deren Namensbezeichnung "Verteiler" enthält '--> hier kommt der Laufzeitfehler 91 :( Set VTList = VTListEntries.AddressEntries.Add(VTEntries) 'zeige Auswahldialog mit InitialListe aller Einträge mit der Bezeichnung "Verteiler" SND.InitialAddressList = VTList SND.Recipients = Nothing SND.NumberOfRecipientSelectors = Outlook.OlRecipientSelectors.olShowTo SND.ToLabel = "Verteiler hinzufügen" SND.ShowOnlyInitialAddressList = True SND.AllowMultipleSelection = True End Sub


Warum übernimmt er den korrekten String nicht als Grundlage für ein neues Outlook-Adresslistenobjekt?

Bin für jede Hilfe oder Hinweis dankbar.,

Viele Grüße

Kalle

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Globale Adressliste mit Filter ansprechen
09.08.2023 13:48:42
Rudi Maintaire
Hallo,
vielleicht solltest du diese Frage in einem OUTLOOK-Forum stellen.

Gruß
Rudi
AW: Globale Adressliste mit Filter ansprechen / Exchange
15.08.2023 12:47:35
Firmus
Hi Kalle,

ich konnte dein Makro nur teilweise verifizieren und auf Fehlersuche gehen, DENN
GAL steht nur mit Exchangeserver zur Verfügung. Da muss ich passen.

Beim "Schreibtischtest" ist mir aufgefallen:

Dim VTEntries As String
Addressentries bestehen nicht nur aus einem String, sie haben eine Struktur.

Set VTList = VTListEntries.AddressEntries.Add(VTEntries)
Mit diesem SET sollen die Addressentries eingefügt werden.
Meine Annahme:
Wenn ich ein ADD einer Struktur durchführen will, reicht es nicht aus den ADD-Befehl mit Strings zu füttern.
(Das konnte ich - mangels Exchangeserver - leider nicht demonstrieren, deshalb bleibt es unbewiesene Theorie.)

Weitere Unterstützung kann im mangels Equipment leider nicht leisten.

Gruß,
Firmus
Anzeige
AW: Globale Adressliste mit Filter ansprechen
15.08.2023 15:57:25
Oberschlumpf
Hi,

hast du denn schon, wie vorgeschlagen, in einem OUTLOOK-Forum deine Frage gestellt?

Wenn ja, kannst du uns bitte den Link posten, denn weil wir es ja vielleicht nicht wissen, möchten ja auch wir lernen.
Wenn nein, wieso nicht?

Ciao
Thorsten
Globale Adressliste mit Filter ansprechen
15.08.2023 16:21:25
Kalle
Hallo Thorsten,

ich habe die Frage noch nicht in einem Outlook-Forum gestellt, weil ich im Grunde nur bei Herber aktiv bzw. angemeldet bin. Sobald ich neue Erkenntnisgewinne erziele, teile ich Sie hier gerne mit. Momentan versuche ich etwas über Funktionsweise der manuellen Filter/Keyword-Auflistung im Adressbuch herauszufinden. Wenn man die mit einem String via SND ansprechen könnte, wäre das Problem ja auch gelöst.

Viele Grüße

Kalle
Anzeige
AW: Globale Adressliste mit Filter ansprechen
15.08.2023 16:31:56
Oberschlumpf
Hi Kalle,

ok, ich würd ja gern helfen, aber leider versteh auch ich kaum ein (outlook)Wort.
Ich warte mal auf weitere deiner Erkenntnisgewinne.
Bis dahin viel Erfolg!

Ciao
Thorsten
AW: Globale Adressliste mit Filter ansprechen / Exchange
15.08.2023 15:50:42
Kalle
Hallo Firmus,

Danke für Deine Überlegungen dazu. Zugegeben, ich habe das Makro bisher auch nur auf Arbeit unter MS-Exchange Bedingungen geprüft und nicht daheim am lokalen Outlook. Das hole ich nach. Dein Struktur vs. String-Ansatz klingt plausibel, aber wie soll man den auf Objekt-Ebene auflösen bzw. das Objekt korrekt füllen? Außer Add fällt mir da nicht viel ein ...

Viele Grüße

Kalle

P.S. Wieso ist das Makro 2x im Thread? Hatte es nur 1x in die Tags gepackt ... merkwürdig

Anzeige

83 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige