Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Email über URL auslesen
#1
Hallo Zusammen,
kurz vorab: Ich habe früher (10 Jahre) als Anfänger viel mit VBA gemacht. In der Zwischenzeit weniger. Daher eingerostet.

Ich habe folgende Herausforderung:
In den Zellen A1:A2000, stehen eine URL (Websites)
Ich möchte nun alle Emails (mailto) finden und in die Zellen B1 ff schreiben.

Geht dies überhaupt? Kann im Netz nicht wirklich etwas finden.

Danke für euren Input

Stefan
50
Immer noch der Alte nur älter!
Antworten Top
#2
Hallo!

Das geht mit "Ersetzen".

Arbeitsblatt mit dem Namen 'Tabelle1'
AB
1mailto:beispiel@beispiel.orgbeispiel@beispiel.org

ZelleFormel
B1=ERSETZEN(A1;1;7;"")

Gruß, René
Antworten Top
#3
Danke für deine Antwort.

Ich habe es vermutlich nicht richtig erklärt:
In der Zelle A1:A2000 stehen jeweils URL = http//www.xxxxx.de.

Soweit ich noch weiß kkann man irgendwie den Quellcode in die Zwischenablage lesen und dann nach Email Adressen durchsuchen.  hierfür nutzt man dann "mailto" für die Suche und nicht etwa das "@"-Zeichen.

Ich kann dies nur nicht mehr in VBA übersetzen. Ist zu lange her... :
50
Immer noch der Alte nur älter!
Antworten Top
#4
Hallo, 19

z. B. so: 21

Code:
Option Explicit
Public Sub Main()
    Dim objHTTPRequest As Object
    Dim strResult As String
    Dim strText As String
    Dim lngRow As Long
    On Error GoTo Fin
    Set objHTTPRequest = CreateObject("WinHTTP.WinHTTPrequest.5.1")
    objHTTPRequest.SetTimeouts 3000, 3000, 3000, 3000
    With ThisWorkbook.Worksheets("Tabelle1")
        For lngRow = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
            objHTTPRequest.Open "GET", .Cells(lngRow, 1).Text, False
            objHTTPRequest.Send
            If objHTTPRequest.Status = 200 Then
                strText = objHTTPRequest.ResponseText
                strResult = fncMail(strText)
                If Trim$(strResult) = "" Then
                    strResult = "Keine Mailadresse!"
                Else
                    .Cells(lngRow, 2).Value = strResult
                End If
            Else
                strResult = "Keine Antwort!"
            End If
        Next lngRow
    End With
Fin:
    Set objHTTPRequest = Nothing
    If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & " " & Err.Description
End Sub
Private Function fncMail(ByVal strAll As String) As String
    Dim objRegEXP As Object
    Dim objMs As Object
    Dim objM As Object
    Dim strEmailAddress As String
    Set objRegEXP = CreateObject("VBScript.RegExp")
    With objRegEXP
        .Pattern = "([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})"
        .IgnoreCase = True
        .Global = True
        Set objMs = .Execute(strAll)
        If objMs.Count > 0 Then
            fncMail = objMs.Item(0).Value
        End If
    End With
    Set objM = Nothing
    Set objMs = Nothing
End Function
________
Servus
Case
Antworten Top
#5
Super, Danke.
Werde ich Morgen direkt ausprobieren!
50
Immer noch der Alte nur älter!
Antworten Top
#6
Hallo,

der Code funktioniert bedingt!

> Homepages von bestimmten Anbietern (z.B. Wix.com) werden nicht "richtig" ausgelesen.
   Hier taucht immer eine Platzhalter Email auf: "14370afcdc17429f9e418d5ffbd0334a@sentry.wixpress.com"
   Im Impressum steht aber eine echte: info@musterfirma.de

> Bei anderen Hompages wird gar nichts gefunden 
    Im Impressum steht aber eine echte: info@musterfirma.de

> Diverse Fehlermeldungen zwingen zum Neustart
[
Bild bitte so als Datei hochladen: Klick mich!
]

[color=#333333][size=small][font=Tahoma, Verdana, Arial, sans-serif]Für ca. 50 % konnte ich eine Email per VBA finden.


Dies ist schon eine riesige Erleichterung.

Danke dafür.

Vielleicht gibt es ja noch weitere Optimierungsmöglichkeiten. zum Beispiel ALLE Emails einer URL finden!

Danke
50
Immer noch der Alte nur älter!
Antworten Top
#7
Hallo, 19

nun - das ist klar. Je nachdem, wie die Seite aufgebaut ist, musst du entsprechend reagieren. Jetzt kommt die Fleißarbeit. 21

Etwas bequemer hast du es mit PowerShell. Da bläkt allerdings gerne der Virenscanner.

Nehmen wir mal dein Beispiel "Wix.com".

Mit...

Code:
varArr = Split(CreateObject("wscript.shell").exec("PowerShell (iwr ""https://de.wix.com"").links.href").stdout.readall, vbCrLf)

... erhältst du ein Array mit allen Links der Seite. Unter Anderem auch "https://de.wix.com/impressum"

Mit...

Code:
varArr = Split(CreateObject("wscript.shell").exec("PowerShell (iwr ""https://de.wix.com/impressum"").links.href").stdout.readall, vbCrLf)

... dann auch "mailto:support@wix.com". 21

Jetzt noch eine Schleife um deine Seiten und fertig.

Das lässt sich, mit Anpassungen, auch mit dem "WinHTTPrequest" machen.
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • stepcke
Antworten Top
#8
Hallo Case,

Danke für deine Antwort.
Ich habe mich mal wieder missverständlich ausgedrückt! Huh

Das Beispiel bezog sich auf Service-Anbieter Wixpress mit dem einige Ihre Webseiten aufbauen. Hier findet der Code immer nur den  Platzhalter des Anbieters.

Ich kann mir vorstellen, dass deine Lösung bei meinen restlichen Adressen funktioniert. Denn hier wird auch kein Ergebnis ausgegeben. (siehe PN)

Nur habe ich keine Ahnung wo ich deinen Vorschlag im Code einbinden kann/soll. Confused

Wie gesagt: Ich taste mich nach vielen Jahren erst wieder an VBA ran. Und ehrlicherweise waren meine damaligen Versuche einfacher und nur innerhalb von Excel. 21

Deinen Code kann ich, trotz Einzelschritt,  nur zu einem Bruchteil interpretieren.
Mir scheinen auch noch kleine Fehler in den Schleifen (habe ich angepasst) und nicht genutzte Variablen vorhanden zu sein. Idea

Ich würde mich freuen wenn du mir noch mal in die Spur helfen könntest. 18

Danke
50
Immer noch der Alte nur älter!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste