Globales Adressbuch in Excel durchsuchen
Schritt-für-Schritt-Anleitung
Um das globale Adressbuch in Outlook über Excel zu durchsuchen, kannst Du die folgenden Schritte befolgen:
-
Öffne Excel und gehe in das VBA-Editor-Fenster (Alt + F11).
-
Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinWorkbookName)" > Einfügen > Modul.
-
Kopiere den folgenden Code in das Modul:
Function SearchGAL(strName As String) As String
Dim objSession, objGAL, objRcpts As Object
Dim intRcpt As Integer
On Error GoTo GALError
Set objSession = CreateObject("Redemption.RDOSession")
objSession.Logon
Set objGAL = objSession.AddressBook.GAL
Set objRcpts = objGAL.ResolveNameEx(strName)
SearchGAL = objRcpts(1).Name
If objRcpts.Count = 0 Then
MsgBox ("Kontakt '" & strName & "' konnte nicht gefunden werden")
End
End If
If objRcpts.Count > 10 Then 'Nicht mehr als 10 Treffer anbieten
MsgBox ("Angabe zu ungenau")
End
End If
If objRcpts.Count > 1 Then
With frmRcpts 'Userform mit Cbo (cboRcpts) und 2 Cmds
.Enabled = True
For intRcpt = 1 To objRcpts.Count
.cboRcpts.AddItem objRcpts(intRcpt) 'Treffer in Cbo einfügen
Next
.cboRcpts.Value = frmRcpts.cboRcpts.List(0)
.Show
SearchGAL = .cboRcpts.Value 'Namensauswahl aus cbo
.Enabled = False
End With
End If
Exit Function
GALError:
MsgBox "An error occurred in modul: " & Application.VBE.ActiveCodePane.CodeModule.Name & _
vbCrLf & _
"Error number: " & Err.Number & vbCrLf & "Description: " & Err.Description
On Error Resume Next
Set objSession = Nothing
Set objGAL = Nothing
Set objRcpts = Nothing
End
End Function
-
Erstelle eine UserForm mit einer ComboBox und zwei Buttons (OK und Abbrechen), um die Treffer anzuzeigen.
-
Rufe die Funktion auf, um nach einem Namen im globalen Adressbuch zu suchen.
Häufige Fehler und Lösungen
- Fehler bei der Verbindung zu Outlook: Stelle sicher, dass Outlook geöffnet ist und Du über die erforderlichen Berechtigungen verfügst.
- Fehlermeldung: "Kontakt konnte nicht gefunden werden": Prüfe, ob der eingegebene Name korrekt ist.
- Fehler bei der UserForm-Anzeige: Überprüfe, ob die UserForm korrekt erstellt und im Code referenziert wird.
Alternative Methoden
Eine alternative Methode zur Suche im globalen Adressbuch ist die Verwendung von Outlook selbst. Du kannst die Outlook-Funktion "Kontakte suchen" nutzen, um direkt nach einem Namen zu suchen, ohne Excel zu verwenden.
Praktische Beispiele
Hier ist ein einfaches Beispiel, wie Du die Funktion GetMail
verwenden kannst, um die E-Mail-Adresse eines Kontakts aus dem globalen Adressbuch zu erhalten:
Function GetMail(strRcpt As String) As String
Dim outApp As Outlook.Application
Dim outNms As Outlook.Namespace
Dim outAddr As Outlook.AddressList
Dim outRcpt As Outlook.AddressEntry
On Error GoTo MailError
Set outApp = New Outlook.Application
Set outNms = outApp.GetNamespace("MAPI")
Set outAddr = outNms.AddressLists("Globale Adressliste")
Set outRcpt = outAddr.AddressEntries(strRcpt)
GetMail = outRcpt.GetExchangeUser.PrimarySmtpAddress
Exit Function
MailError:
MsgBox "An error occurred in modul: " & Application.VBE.ActiveCodePane.CodeModule.Name & _
vbCrLf & _
"Error number: " & Err.Number & vbCrLf & "Description: " & Err.Description
On Error Resume Next
Set outApp = Nothing
Set outNms = Nothing
Set outAddr = Nothing
Set outRcpt = Nothing
End
End Function
Tipps für Profis
- Verwende Filter: Wenn Du die Anzahl der Einträge reduzieren möchtest, bevor Du die Suche startest, kannst Du Filter auf die
AddressEntries
anwenden.
- VBA-Fehlerbehandlung: Nutze
Err.Number
und Err.Description
, um spezifische Fehler zu identifizieren und zu debuggen.
- Performance optimieren: Ziehe in Betracht, nur relevante Teile des Adressbuchs zu laden, um die Performance zu verbessern, besonders bei großen
addressentries
.
FAQ: Häufige Fragen
1. Wie kann ich das globale Adressbuch in Kontakte importieren?
Du kannst die globale Adressliste in Outlook über die Importfunktion importieren. Gehe zu "Datei" > "Importieren und Exportieren" > "In eine andere Anwendung importieren".
2. Was ist der Unterschied zwischen der globalen Adressliste und meinen persönlichen Kontakten?
Die globale Adressliste enthält alle Kontakte innerhalb Deiner Organisation, während persönliche Kontakte nur die Kontakte sind, die Du selbst gespeichert hast.
3. Kann ich mehrere Namen gleichzeitig suchen?
Aktuell unterstützt die Funktion nur die Suche nach einem Namen. Du könntest jedoch den Code anpassen, um eine Liste von Namen zu akzeptieren und entsprechende Ergebnisse zurückzugeben.
4. Wie kann ich die UserForm anpassen?
Du kannst das Design der UserForm im VBA-Editor ändern, indem Du Steuerelemente hinzufügst oder deren Eigenschaften anpasst.