Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Email Adresse aus Email Text extrahieren

Email Adresse aus Email Text extrahieren
Stephan
Hallo,
ich habe ein Skript, das mit Version Office 2007 wunderbar funktionierte, bei der Version 2010 aber aus irgendeinem Grund scheitert.
Ich will aus Emails, eine Email Adresse Extrahieren, die im Email Text angegeben ist. Es sind Mails, die als unzustellbar zurück kommen.
Kann mir jemand sagen, wo der Fehler liegt?
Die Mails liegen alle im Folder Junk-E-Mail.
Daaanke vorweg für die Hilfe.
Hier das Skript:
Option Explicit
'Option Explicit
Sub GrapText()
Dim objOutlook As Object
Dim objnSpace As Object
Dim objFolder As Object
Dim intCounter As Integer, intCount As Integer, lRow As Long
Dim sTxt As String, Text As String
Dim strAr1, strAr2, i As Integer
Cells(1, "A") = "Mailaddressen": Cells(1, "A").Font.Bold = True
lRow = 2 'ab welcher Zeile einfügen
'   hier der Text der im Betreff vorkommt
Text = LCase("Undelivered Mail Returned to Sender")
With Application
.ScreenUpdating = False
Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
Set objFolder = objnSpace.Folders("Persönlicher Ordner").Folders("Junk-E-Mail") 'Persö _
nlicher Ordner
intCount = objFolder.Items.Count
If intCount > 0 Then
For intCounter = intCount To 1 Step -1
.StatusBar = "Bitte warten, es werten noch " & intCounter & " E-Mails untersucht"
If InStr(1, LCase(objFolder.Items(intCounter).Subject), Text) > 0 Then
sTxt = objFolder.Items(intCounter).body
strAr1 = Split(sTxt, "")
Cells(lRow, "A") = Cells(lRow, "A") & strAr2(LBound(strAr2)) & ";"
Next i
lRow = lRow + 1
End If
1   If Err.Number  0 Then On Error GoTo 0: Err.Number = 0
Next intCounter
End If
.StatusBar = False
.ScreenUpdating = True
End With
Set objnSpace = Nothing
Set objFolder = Nothing
Set objOutlook = Nothing
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Email Adresse aus Email Text extrahieren
08.06.2011 17:36:07
ransi
HAllo Stefan
...bei der Version 2010 aber...scheitert...
Was klappt denn nicht ?
Bekommst du eine Fehlermeldung ?
Werden keine Dateien gefunden ?
Gibt der PC Rauchzeichen ?
...?
...?
ransi
AW: Email Adresse aus Email Text extrahieren
08.06.2011 20:53:44
Stephan
Dieser Debugger spring auf und markiert die Pfadzeile gelb
Diese:
Set objFolder = objnSpace.Folders("Persönlicher Ordner").Folders("Junk-E-Mail") 'Persö _
nlicher Ordner
Anzeige
AW: Email Adresse aus Email Text extrahieren
09.06.2011 09:18:49
Stefan
So, habs gefunden. Waren die Links, die nicht stimmten. Danke trotzdem.
LG
STfean
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

E-Mail Adressen aus E-Mail Text extrahieren in Excel


Schritt-für-Schritt-Anleitung

Um E-Mail Adressen aus dem Text von E-Mails zu extrahieren, kannst du ein VBA-Skript verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul ein: Klicke im Menü auf Einfügen und dann auf Modul.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Option Explicit
    Sub GrapText()
       Dim objOutlook As Object
       Dim objnSpace As Object
       Dim objFolder As Object
       Dim intCounter As Integer, intCount As Integer, lRow As Long
       Dim sTxt As String, Text As String
       Dim strAr1, strAr2() As String
       Cells(1, "A") = "Mailadressen": Cells(1, "A").Font.Bold = True
       lRow = 2 'ab welcher Zeile einfügen
       Text = LCase("Undelivered Mail Returned to Sender")
       With Application
           .ScreenUpdating = False
           Set objOutlook = CreateObject("Outlook.Application")
           Set objnSpace = objOutlook.GetNamespace("MAPI")
           Set objFolder = objnSpace.Folders("Persönlicher Ordner").Folders("Junk-E-Mail")
           intCount = objFolder.Items.Count
           If intCount > 0 Then
               For intCounter = intCount To 1 Step -1
                   .StatusBar = "Bitte warten, es werten noch " & intCounter & " E-Mails untersucht"
                   If InStr(1, LCase(objFolder.Items(intCounter).Subject), Text) > 0 Then
                       sTxt = objFolder.Items(intCounter).Body
                       strAr2 = Split(sTxt, " ") ' Hier nach Leerzeichen splitten
                       For i = LBound(strAr2) To UBound(strAr2)
                           If InStr(strAr2(i), "@") > 0 Then ' Überprüfen, ob es eine E-Mail Adresse ist
                               Cells(lRow, "A") = Cells(lRow, "A") & strAr2(i) & ";"
                           End If
                       Next i
                       lRow = lRow + 1
                   End If
               Next intCounter
           End If
           .StatusBar = False
           .ScreenUpdating = True
       End With
       Set objnSpace = Nothing
       Set objFolder = Nothing
       Set objOutlook = Nothing
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Skript aus: Drücke ALT + F8, wähle GrapText und klicke auf Ausführen.

Das Skript durchsucht den Ordner "Junk-E-Mail" und extrahiert E-Mail Adressen aus unzustellbaren Mails.


Häufige Fehler und Lösungen

  • Fehlermeldung bei der Ordnersuche: Stelle sicher, dass der Pfad zu deinem "Junk-E-Mail" Ordner korrekt ist. Manchmal kann die Struktur leicht abweichen, insbesondere bei unterschiedlichen Outlook-Versionen.

  • Keine E-Mail Adressen gefunden: Überprüfe, ob die E-Mails tatsächlich im richtigen Ordner sind und ob der Betreff korrekt eingegeben wurde.


Alternative Methoden

Wenn du keine VBA-Skripte verwenden möchtest, kannst du auch Excel-Formeln nutzen, um E-Mail Adressen zu filtern. Hier ein Beispiel:

  1. Angenommene Daten: Angenommen, die E-Mail Texte stehen in den Zellen A1 bis A10.
  2. Benutze diese Formel in Zelle B1:

    =TEXTJOIN(";", WAHR, FILTER(A1:A10, ISNUMBER(SEARCH("@", A1:A10)), ""))

Diese Formel filtert alle Zellen in A1:A10, die eine E-Mail Adresse enthalten und verbindet sie in einer Zelle.


Praktische Beispiele

Angenommen, du hast folgende E-Mail Texte:

  • "Die E-Mail an test@example.com war unzustellbar."
  • "Bitte sende eine E-Mail an hello@domain.com."

Mit dem oben genannten Skript oder der Formel kannst du die E-Mail Adressen test@example.com und hello@domain.com extrahieren.


Tipps für Profis

  • Debugging: Wenn dein Skript nicht funktioniert, setze Breakpoints im VBA-Editor, um den Code Schritt für Schritt zu überprüfen.
  • Reguläre Ausdrücke: Für komplexere E-Mail Formate kannst du auch reguläre Ausdrücke verwenden, um E-Mail Adressen noch präziser herauszufiltern.
  • Automatisierung: Du kannst das Skript so anpassen, dass es automatisch bei bestimmten Ereignissen ausgeführt wird, z.B. beim Öffnen von Excel.

FAQ: Häufige Fragen

1. Funktioniert das Skript in allen Excel-Versionen? Ja, das Skript ist für die Microsoft Excel Versionen 2007 und 2010 geeignet, aber es kann in neueren Versionen ebenfalls verwendet werden.

2. Kann ich das Skript anpassen, um nur bestimmte Domains zu filtern? Ja, du kannst die Bedingung im Code anpassen, um nur E-Mail Adressen mit bestimmten Domains zu extrahieren, indem du die If-Bedingung im Skript modifizierst.

3. Was tun, wenn ich eine Fehlermeldung bekomme? Überprüfe den Code auf Syntaxfehler und stelle sicher, dass alle benötigten Bibliotheken in Excel aktiviert sind. Debugging kann helfen, die genaue Fehlerquelle zu finden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige