Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
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

Namen aus Outlook abgleichen und ergänzen

Namen aus Outlook abgleichen und ergänzen
02.12.2014 07:31:53
Jockel
Darf ich mein Thema von letzte Woche noch mal platzieren !:
Hallo,
ich habe in einer Tabelle ab Zeile 3 in Spalte A NAMEN und in Spalte B VORNAMEN von Mitarbeitern drin.
(Können so zwischen 30 und 50 Mitarbeiter sein)
Mit VBA würde ich gerne von diesen Mitarbeiten in Outlook aus dem gesamten Adressbuch
(nicht aus den persönlichen KOntakten) zu den entsprechenden Namen die Felder TELEFON; RESORT und EINHEIT auslesen und jeseils in Spalte C, D und E eintragen.
Alle Beispiele, die ich seither gefunden haben, lesen immer nur die persönlichen Kontakte aus, oder aber das komplette Telefonbuch.
Aber so, dass eine individuelle Suche für nur ein paar definierten Mitarbeitern stattfindet, finde ich nichts.
Hat jemand eine Idee, wie man sowas macht, bzw geht das überhaupt?
Danke mal
Jockel

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen aus Outlook abgleichen und ergänzen
02.12.2014 09:57:38
Tino
Hallo,
kannst mal so versuchen.
I der Zeile ... 'Tabelle anpassen, evtl. die Tabelle anpassen!
Bei "Global Address List" müsstest du evtl. das Adressbuch anpassen!
Die angaben RESORT und EINHEIT kenne ich nicht, da kann ich nicht helfen!
Sub Test()
Dim outApp As Object, outNms As Object, outAddr As Object
Dim oEntries As Object, oEntrie As Object
Dim ArName, ArErg(), n&
Dim oWS As Worksheet
Set oWS = Tabelle1 'Tabelle anpassen
On Error GoTo hError
With oWS
With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 2)
If .Rows(1).Row 
Gruß Tino

Anzeige
AW: Namen aus Outlook abgleichen und ergänzen
02.12.2014 11:17:15
Werner
Hallo Zusammen,
das interessiert mich auch ;)
.. nur bekomme ich den Code nicht zum "laufen"
Kann einer von Euch eine Datei mal hochladen ?
Freu mich :)
BG
Werner

hier ein Beispiel
02.12.2014 11:43:02
Tino
Hallo,
beim öffnen wird in G2 eine Liste der Adressbücher erstellt, dort eins auswählen!
In Spalte A Namen eintragen u. in B Vornamen!
(Evtl. muss beim Ablauf der Zugriff auf Outlook zugelassen werden)
https://www.herber.de/bbs/user/94144.xlsm
Gruß Tino

AW: hier ein Beispiel
02.12.2014 11:56:04
Werner
Hi Tino
danke für die Datei :)
wie ist das zu verstehen mit dem "Zugriff auf Outlook zulassen" ?
Ich hab in VBA den Verweis auf "Microsoft Outlook 12.0 Object Library" gesetzt
und als Adressbuch "Globales Adressbuch" ausgewählt
Nur leider passiert nix :( Es kommt auch keine Fehlermeldung
Noch nen Tip ?
Gruss
Werner

Anzeige
AW: hier ein Beispiel
02.12.2014 12:20:19
Jockel
Hallo Tino,
vielen Dank für das Beispiel.
Bei mir wird in dem Moment, in den ich die Excel Mappe aufmachen, Outlook geschlossen.
Ich sehe dann zwar , das es in der Auswahlbox, die Eintröge gibt aber OUtlook ist dann zu .
Habe dann mal die Fehlerroutinen deaktiviert. Nach dem Start der Mappe und Auswahl des Adressbuches kommt die Fehlemeldung:
Laufteitfehler91
Objektvariable oder WITH-Blockvariable nicht festgelegt
in der Zeile
If oEntrie.GetContact.LastName = ArName(n, 1) Then
hmm, kann damit garnichts anfangen.
Weißt du , woran das liegen kann ?
Danke
Jockel

Anzeige
AW: hier ein Beispiel
02.12.2014 12:21:39
Tino
Hallo,
mit Meldung meine ich diese.
Userbild
Kann man auch hiermit unterbinden.
https://www.mapilab.com/de/outlook/security
Sind auch Einträge im Globales Adressbuch?
Veruch mal und mach aus der Zeile im Modul1
Set outAddr = outNms.AddressLists(strBuch)

diese
Set objMapiFolder = objNameSpace.AddressLists("Global Address List")
Sonst weis ich jetzt auch nicht, bei funzt es an meinem Heim und Arbeitsrechner!
Gruß Tino

Anzeige
AW: hier ein Beispiel
02.12.2014 14:54:35
Jockel
Hallo Tino,
Sorry für die Mühe, ist nichts zu machen, das gleiche Problem ist immer noch da.
Sobald ich Outlook für den ZUgriff freigebe, kommt die Meldung wieder.
Ich will aber nicht ausschliessen, wenn es bei Dir funktioniert, dass bei mir der Zugriff durch irgend welche Richtlinen oder sowas blockiert wird.
Vielleicht sind bei uns die Felder irgend wie anders definiert. Habe mal mit einem ganz einfachen Code versucht, meine Kontakte auszulesen, das hat komischerweise funktioniert, aber das bringt mich leider nicht weiter.
Egal, werde ich irgen wann eine andere Lösung finden.
Auf jeden Dank für Deine MÜhe, Tino.
Jockel

Anzeige
Tino, habe noch was gefunden, vielleicht ...
02.12.2014 15:40:36
Jockel
Hallo Tino,
mit diesem Code scheint der ZUgriff auf das/die Adressbücher/Listen zu funktionieren.
Wenn Ich den Code VB-Editor starte, kann ich Im Direktfenster sehen, wie das koplette
Adressbuch ausgelesen wird ( Name, Vorname, Abteilung)
http://www.cboden.de/softwareentwicklung/vba/tipps-tricks/28-globales-adressbuch-auslesen
Der Code macht jetzt natürlich nicht das was er soll, aber er zeigt, ein Zugriff auf das Adressbuch ist möglich:
Public Sub readGAL()
Dim oOutlook As Object
Dim oAddressList As Object
Dim oAddressEntry As Object
Dim oExchangeUser As Object
' Outlook-Instanz anlegen
Set oOutlook = CreateObject("Outlook.Application")
' Alle Adress-Listen durchgehen
For Each oAddressList In oOutlook.Session.AddressLists
' Prüfen, ob Exchange-Liste
If oAddressList.AddressListType = olExchangeGlobalAddressList Then
' Alle Adress-Einträge durchgehen
For Each oAddressEntry In oAddressList.AddressEntries
' Prüfen, ob Adress-Eintrag
If oAddressEntry.AddressEntryUserType = olExchangeUserAddressEntry _
Or oAddressEntry.AddressEntryUserType = olExchangeRemoteUserAddressEntry Then
' Eintrag von Exchange laden
Set oExchangeUser = oAddressEntry.GetExchangeUser
Debug.Print oExchangeUser.Name & ": " & oExchangeUser.Department
End If
Next
End If
Next
' Objektvariable freigeben
Set oExchangeUser = Nothing
Set oAddressEntry = Nothing
Set oAddressList = Nothing
Set oOutlook = Nothing
End Sub

Ist es vielleicht auf Gundlage diesen Codes Möglich, eine Liste mit Namen (Tel.NR. Mobil ,.....) abzugleichen.
Damit zB kann ich alle verfügbaren Listen und Adresbücher auslesen:

Public Sub listAddressListNames()
Dim oOutlook As Object
Dim oAddressList As Object
' Outlook-Objekt laden
Set oOutlook = CreateObject("Outlook.Application")
' Alle Adressbücher durchgehen
For Each oAddressList In oOutlook.Session.addresslists
Debug.Print oAddressList.Name
Next
' Objektvariable freigeben
Set oOutlook = Nothing
End Sub

Anzeige
bin auch noch etwas vorrangekommen
02.12.2014 15:49:05
Tino
Hallo,
über die Outlook-Hilfe, Unterscheidung zwischen ExchangeUser u. OutlookContact.
(Ähnlich wie in Deinem Code)
https://www.herber.de/bbs/user/94154.xlsm
Gruß Tino

AW: bin auch noch etwas vorrangekommen
05.12.2014 20:50:46
jockel
Hallo Tino,
vielen Dank, sorry bin erst heute dazu gekommen.
Der Code scheint zu laufen, zumindest kommt mal keine Fehlermeldung.
Hatte ihn mal gestartet, lief ca 15 min. (Sanduhr)
Musste dann aber Abbrechen, nicht das der Code noch unseren Excange Server lahm legt :-)
Weiss nicht, was der Code so lange gemacht hat. Ein Ergebnis hat er in dieser Zeit nicht gefunden.
Werde nächste noch mal einen Versuch starten
Gruß Jockel

Anzeige
kann sein braucht lange ...
05.12.2014 21:08:24
Tino
Hallo,
bin an einer Variante die Filter funktioniert.
Gruß Tino

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige