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

Mailadresse auf Internetseite per VBA ermitteln

Mailadresse auf Internetseite per VBA ermitteln
Rüdiger
Liebe VBA-InternetExplorer-Freaks!
ich öffne über VBA Internetseiten, deren URL ich (neben anderem) in einem Excel-Sheet erfasst habe.
Jetzt möchte ich aber auf der jeweils geöffneten Seite per VBA nach der Mailadresse des Anbieters suchen, also einem String, der an irgendeiner Stelle ein "[add]" enthält.
Den so gewonnenen String möchte ich dann mit der Mailadresse vergleichen, die ich schon in meinem Excelsheet gespeichert habe. Wenn die beiden Strings nicht identisch sind, soll die neu gefundene eintragen werden.
(Zweck ist Vorbereitung einer Mailingaktion: jedes Jahr einmal! Bisher habe ich alle Mails händisch auf den Internetseiten gesucht. Für die vielen Adressen die absolute Fleißarbeit!!)
Wäre also schön, wenn es da eine einfachere Lösung gäbe.
Ich habe mir schon im Überwachungsfenster angesehen, was sich alles unter dem
InternetExplorer-Objekt (bei mir oWeb.).Document.Body verbirgt.
Kann mir da einer von euch einen Tipp geben? Einen Link kann man ja im HTML eindeutig erkennen. Aber gibt es eine einfachere Möglichkeit das über Eigenschaften aus dem Document.Body zu ermitteln?
Oder kann ich das Suchen-Fenster per VBA mit "[add]" suchen lassen und dann den String herausschälen.
Noch schwieriger wird es, wenn sich die Mailingadresse, wie so oft unter einem anderen Link verbirgt, wie z.B. "Contact".... Dann müsste ich ja wohl zuerst mal (per VBA) den Link aufrufen?!
Daneben habe ich im Moment noch das Problem, dass ich für die Objekte zum IE das "Wort vervollständigen" nicht angezeigt bekomme.
Für Excel, Word, Outlook... funktioniert es. Schätze, ich muss noch was einbinden (über - Extras - Verweise)?.
Vielen Dank für Eure Unterstützung
Grüße
Rüdiger
AW: Mailadresse auf Internetseite per VBA ermitteln
20.10.2009 17:48:05
ransi
HAllo Rüdiger
HTML ist nun wahrlich nicht mein Ding.
HAbe einfach mal eine Seite in den IE geladen und mich durch das Lokalfenster gehangelt.
Wenn ich diesen Code mit F8 im Einzelschritt durchblätter werden einige Links gefunden,
Option Explicit

Public Sub machs()
Dim IE As Object
Dim DieLinks As Object
Dim I As Integer
Dim Quelltext As String
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate "www.herber.de"
Do While IE.busy
    DoEvents
Loop
Set DieLinks = IE.document.links
For I = 0 To DieLinks.Length - 1
    MsgBox DieLinks.Item(I).href
Next
Set IE = Nothing
End Sub


Starte ich ihn mit F5, mal gehts, mal gehts nicht....
ransi
Anzeige
AW: Mailadresse auf Internetseite per VBA ermitteln
20.10.2009 17:53:26
Anton
Hallo Rüdiger,
oder so:

Sub b()
  Dim IEApp As Object  
  Dim IEDocument As Object    
  Set IEApp = CreateObject("InternetExplorer.Application")  
  IEApp.Visible = False
  IEApp.Navigate "https://www.herber.de/impressum.html"
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Busy = False    
  Set IEDocument = IEApp.Document  
  Do: Loop Until IEDocument.ReadyState = "complete"    
  For i = 0 To IEDocument.links.Length - 1  
    If InStr(1, IEDocument.links(i).href, "@") <> 0 Then _    
      Debug.Print IEDocument.links(i).innertext & vbTab & IEDocument.links(i).href  
  Next
  IEApp.Quit
  Set IEDocument = Nothing  
  Set IEApp = Nothing  
End Sub  

mfg Anton
Anzeige
AW: Mailadresse auf Internetseite per VBA ermitteln
20.10.2009 17:57:10
ransi
HALLO
InnerHtml, OuterHtml...
Keine Ahnung wofür man sowas braucht...
Aber das sind Strings, und da kann man ein RegEx drauf ansetzen.
Versuch mal so:
Option Explicit

Public Sub machs()
Dim IE As Object
Dim Quelltext As String
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate "www.herber.de"
Do While IE.busy
    DoEvents
Loop
Quelltext = IE.document.documentelement.outerhtml
Set IE = Nothing
MsgBox Join(Email_Filter(Quelltext), vbCrLf)
End Sub



Public Function Email_Filter(strB As String) As Variant
Dim varTmp() As Variant
Dim Regex As Object
Dim M
Dim Treffer
Dim lngIndex As Long
Set Regex = CreateObject("Vbscript.regexp")
With Regex
    .Pattern = "\b(\w[-.\w]*@\w[-.\w]*\.[a-zA-Z]{2,6})\b"
    .IgnoreCase = True
    .Global = True
    Set Treffer = .Execute(strB)
    Redim varTmp(Treffer.Count - 1)
    For Each M In Treffer
        varTmp(lngIndex) = M.Value
        lngIndex = lngIndex + 1
    Next
End With
Email_Filter = varTmp
End Function


ransi
Anzeige
AW: Mailadresse auf Internetseite per VBA ermitteln
Rüdiger
Hallo ransi und Anton!
Toll, dass ihr euch beide gleich so intensiv an die Lösung meines Problems macht!!
Hab ich morgen vormittag viel zu tun.
Gleich die erste Frage: Warum muss das "Do: Loop Until..." zweimal hintereinander stehen? Hab ich schon in einem anderen Beitrag gesehen.
Ihr seht: ich habe,was Eigenschaften und Methoden von VBA in Bezug auf IE betrifft noch kaum Ahnung.
Könnt ihr mir etwas empfehlen, wie ich mich in diese Strukuren etwas einarbeiten kann? Wo das übersichtlicher dargestellt ist. Kann durchaus anspruchsvoller sein. Hab anderweitig schon viel programmiert.
Mit Dank und Gruß aus dem Frankenland
Rüdiger
Anzeige
AW: Mailadresse auf Internetseite per VBA ermitteln
21.10.2009 10:33:00
Rüdiger
Hi ransi,
ich habe deinen Code leicht angepasst - und es läuft tatsächlich!! Du hast mir sehr geholfen!
Das Regex kannte ich nur dem Namen nach.
Damit kann man ja auch im VB(A) genauso Suchpatterns erstellen, wie ich es schon aus Perl kenne.
Jede Mailadresse, die direkt auf der Seite steht, wird gefunden und in der MsgBox angezeigt.
Das hilft bei vielen Seiten, aber längst nicht bei allen.
Wie ich auf untergeordnete Seite komme, um dort zu suchen, möchte ich zunächst mal selbst rauskriegen: den Link auf eine untergeordnete Seite kann ich mit Regex ermitteln, die Seite öffnen und dann wieder suchen wie gehabt....
@Anton jetzt versuche ich mich noch an deinem Hinweis!
Euch beiden vielen Dank für eure wertvollen Tipps!
Gruß
Rüdiger
Anzeige
AW: Mailadresse auf Internetseite per VBA ermitteln
Rüdiger
Hallo Anton,
vielen Dank für deinen Hinweis!
werde ich mir morgen vormittag gleich genau ansehen und austesten und dir Bescheid geben.
Schaut ja eigentlich ganz logisch aus. Nur alleine wäre ich darauf nie gekommen. Dass man einen Link so ansprechen kann..?!
Viele Grüße aus dem Frankenland
Rüdiger
OT@Rüdiger : Das "@" heißt "AT" und nicht "Add"_oT
21.10.2009 02:59:05
NoNet
_oT = "ohne Text"

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige