Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1596to1600
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

Emailadress in globalem Adressbuch ?

Emailadress in globalem Adressbuch ?
08.12.2017 14:04:30
Pasci
Guten Tag allerseits
Ich hoffe, jemand von Euch Profis hier kann mir weiterhelfen ?
und zwar such ich nach einer Möglichkeit, per Makro zu überprüfen, ob alle Email-Adressen, welche ich in einer Excel-Tabelle aufgelistet habe im globalen Adressbuch der Firma vorhanden sind ?
Geht das ?
ich habe da mal mittels Google ein wenig recherchiert und folgenden Code gefunden:
Public Function CheckMail(ByVal strEmail As String) As Boolean
Dim objApp As Object
Dim objList As Object
Dim objEntry As Object
Dim objProperty As Object
Dim strTemp As String
Set objApp = CreateObject("Outlook.Application")
For Each objList In objApp.Session.AddressLists
If objList.Name = "Globales Adressbuch" Then
For Each objEntry In objList.AddressEntries
Set objProperty = objEntry.PropertyAccessor
strTemp = objProperty.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x39FE001E")
If LCase(strTemp) = LCase(strEmail) Then
CheckMail = True
Exit For
End If
Next
End If
Next
Set objEntry = Nothing
Set objList = Nothing
Set objApp = Nothing
Set objProperty = Nothing
strTemp = Empty
End Function
Jetzt müsste ich nur noch wissen, wie ich den anpasse/aufrufe, damit er mir alle email-Adressen welche ich in meiner Excel-Tabelle habe (z.B. in Tabellenblatt1, Spalte A) prüft ?
kann mir da jemand weiterhelfen ?
BESTEN DANK !
Pasci

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Emailadress in globalem Adressbuch ?
08.12.2017 19:14:09
JoWE
Hallo Pasci,
habe zwar kein Exchange und kann Deinen Code nicht testen.
Aber mit folgender Routine geht's vielleicht:
Option Explicit
Sub does_exist_mailadress()
Dim strEmail As String
Dim ze As Long
With Sheets("Tabelle1")
For ze = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
strEmail = .Cells(ze, 1).Value
If CheckMail(strEmail) = True Then
.Cells(ze, 2) = "Mail-Adresse ist vorhanden"
Else
.Cells(ze, 2) = "Mail-Adresse nicht vorhanden"
End If
Next
End With
End Sub

Gruß
Jochen
AW: Emailadress in globalem Adressbuch ?
08.12.2017 19:46:00
Pasci
Hallo Jochen
Danke schon mal für Deinen Code.
Ich habe diesen eben mal ein einer neuen Excel-Mappe als neues Modul eingefügt.
Wenn ich nun als Beispiel ein paar bekannte und unbekannte Email-Adressen unserer Firma in die Spalte A schreibe und das Makro dann laufen lasse, so schreibt mir dieser Code hinter jeder Adresse "Mail-Adresse nicht vorhanden" obwohl auch wirklich existierende Adressen unserer Firma vorhanden sind.
wie gesagt:
es gilt zu prüfen, ob die Email-Adressen der Spalte A auch wirklich im Firmen Globalen Adressbuch vorhanden sind ? (wir verwenden Outlook 2010 / Exchange)
Besten Dank für die weitere Hilfe
Pascal
Anzeige
AW: Emailadress in globalem Adressbuch ?
09.12.2017 20:09:36
JoWE
Hallo Pascal,
setze in Deiner Funktion die Variable CheckMail auf false, wenn die Adresse nicht gefunden wurde.
Gruß
Jochen
AW: Emailadress in globalem Adressbuch ?
11.12.2017 07:41:38
Pasci
Hallo Jochen.
Sorry ... aber verstehe nicht genau was Du meinst...
wie genau müsste ich meinen Code anpassen ?
Aktuell hab ich ja folgenden Code:
Option Explicit

Sub does_exist_mailadress()
Dim strEmail As String
Dim ze As Long
With Sheets("Tabelle1")
For ze = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
strEmail = .Cells(ze, 1).Value
If CheckMail(strEmail) = True Then
.Cells(ze, 2) = "Mail-Adresse ist vorhanden"
Else
.Cells(ze, 2) = "Mail-Adresse nicht vorhanden"
End If
Next
End With
End Sub

Anzeige
AW: Emailadress in globalem Adressbuch ?
11.12.2017 07:43:21
Pasci
Hallo Jochen.
Sorry! verstehe nicht genau was Du meinst...
was genau müsste ich in dem Code von Dir anpassen ?
Aktuell hab ich folgenden Code von Dir:
Option Explicit

Sub does_exist_mailadress()
Dim strEmail As String
Dim ze As Long
With Sheets("Tabelle1")
For ze = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
strEmail = .Cells(ze, 1).Value
If CheckMail(strEmail) = True Then
.Cells(ze, 2) = "Mail-Adresse ist vorhanden"
Else
.Cells(ze, 2) = "Mail-Adresse nicht vorhanden"
End If
Next
End With
End Sub

AW: Emailadress in globalem Adressbuch ?
11.12.2017 08:19:55
JoWE
Hallo Pascal,
neben meinem Code hast Du auch die eingangs gepostete Funktion CheckMail.
Mein Code übergibt in der Schleife jeweils eine Email-Adresse an die Funktion.
In der Funktion musst Du diesen Teil anpassen:
                If LCase(strTemp) = LCase(strEmail) Then
CheckMail = True
Exit For
Else
CheckMail = False
End If

Übrigens lautet die Bezeichnung "Globales Adressebuch" in meiner Firmenumgebung "Globale Adressliste".
Könnte es auch daran liegen?
Gruß
Jochen
Anzeige
AW: Emailadress in globalem Adressbuch ?
11.12.2017 09:07:45
Pasci
Guten Morgen Jochen
Vielen herzlichen Dank für Deine Hilfe.
Ich habe nun den Code in der Funktion angepasst und auch den Namen unserer Globalen Adressliste entsprechend geändert (bei uns in der Firma heisst das wirklich auch "Globale Adressliste"
der komplette Code lautet nun wie folgt:
Option Explicit
Public Function CheckMail(ByVal strEmail As String) As Boolean
Dim objApp As Object
Dim objList As Object
Dim objEntry As Object
Dim objProperty As Object
Dim strTemp As String
Set objApp = CreateObject("Outlook.Application")
For Each objList In objApp.Session.AddressLists
If objList.Name = "Globale Adressliste" Then
For Each objEntry In objList.AddressEntries
Set objProperty = objEntry.PropertyAccessor
strTemp = objProperty.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x39FE001E")
If LCase(strTemp) = LCase(strEmail) Then
CheckMail = True
Exit For
Else
CheckMail = False
End If
Next
End If
Next
Set objEntry = Nothing
Set objList = Nothing
Set objApp = Nothing
Set objProperty = Nothing
strTemp = Empty
End Function
wenn ich nun in einer Beispielsdatei in der Spalte A drei Adressen untereinander schreibe (zwei gibt es in unserer Firma nicht - eine gibt's) und diesen Code nun starte, so läuft der unaufhörlich ...
hört nicht mehr auf ...
Der code von Dir:
Sub does_exist_mailadress()
Dim strEmail As String
Dim ze As Long
With Sheets("Tabelle1")
For ze = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
strEmail = .Cells(ze, 1).Value
If CheckMail(strEmail) = True Then
.Cells(ze, 2) = "Mail-Adresse ist vorhanden"
Else
.Cells(ze, 2) = "Mail-Adresse nicht vorhanden"
End If
Next
End With
End Sub
haben wir hier irgendwo noch nen Fehler drin ?
wie kann ich verhindern, dass der Code in einem Loop dreht ?
Anzeige
AW: Emailadress in globalem Adressbuch ?
11.12.2017 09:50:00
JoWE
Ja,
der Code durchsucht ja auch für jede Adresse das Adressbuch durch!
Das kann, je nachdem wir groß das Adressbuch ist echt lange dauern.
Ich habe das gerade mal für das Adressbuch meines Unternehmens gemacht (knapp 50000 Adressen).
Nur bei einem Treffer wird die Suche unterbrochen und die nächste Schleife fängt von vorn an.
Bei nicht existenten Adressen wird also ohne Unterbrechen von aaa - zzz alles jeweils einmal durchsucht. Für 3 Adressen in Sheet1 brauchte ich 20 Minuten. Aber das Ergebnis stimmte.
Du kannst aber mit Strg+Untbr das Makro stoppen und im Direktfenster prüfen welche Adresse gerade geprüft wird und an welvher Stelle in der Globalen Adressliste die Prüfung gerade ist.
Gruß
Jochen
Anzeige
AW: Emailadress in globalem Adressbuch ?
11.12.2017 11:06:26
Pasci
Ja stimmt !
funktioniert doch einwandfrei :-)
braucht einfach Geduld
nochmals vielen vielen herzlichen Dank für die tolle Unterstützung in dieser Sache !
Pascal
Danke für die Rückmeldung oT
11.12.2017 12:01:15
JoWE

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige