E-Mails aus Excel extrahieren und kopieren
Schritt-für-Schritt-Anleitung
-
Öffne deine Excel-Datei mit den E-Mail-Adressen.
-
Erstelle ein neues Tabellenblatt (z.B. "Tabelle2"), wo die E-Mail-Adressen kopiert werden sollen.
-
Öffne den VBA-Editor: Drücke ALT + F11.
-
Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.
-
Kopiere den folgenden VBA-Code in das Modul:
Option Explicit
Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" ( _
ByRef psa() As Any) As Long
Public Sub CopyMailAddress()
Dim objCell As Range
Dim strFirstAddress As String, astrMailAddress() As String
Dim lngRow As Long, ialngIndex As Long
Dim objDictionary As Object
Worksheets("Tabelle2").Rows(1).ClearContents
With Worksheets("Tabelle1").Cells
Set objCell = .Find(What:="@", LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
If Not objCell Is Nothing Then
Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
strFirstAddress = objCell.Address
Do
astrMailAddress = GetMailAddress(strText:=objCell.Value2)
If SafeArrayGetDim(astrMailAddress) > 0 Then
For ialngIndex = LBound(astrMailAddress) To UBound(astrMailAddress)
objDictionary.Item(Key:=astrMailAddress(ialngIndex)) = vbNullString
Next
End If
Set objCell = .FindNext(After:=objCell)
Loop Until objCell.Address = strFirstAddress
Worksheets("Tabelle2").Cells(1, 1).Resize(1, objDictionary.Count).Value = objDictionary.Keys
Set objCell = Nothing
Set objDictionary = Nothing
End If
End With
End Sub
Private Function GetMailAddress(ByVal strText As String) As String()
Dim objRegEx As Object, objMatch As Object
Dim astrTemp() As String
Dim ialngIndex As Long
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.Global = True
.Pattern = "[a-z0-9\-\.]{2,63}@[a-z0-9\-\.]{2,63}\.[a-z]{2,4}"
.IgnoreCase = True
Set objMatch = .Execute(strText)
End With
With objMatch
If .Count > 0 Then
ReDim astrTemp(0 To .Count - 1)
For ialngIndex = 0 To .Count - 1
astrTemp(ialngIndex) = .Item(ialngIndex).Value
Next
GetMailAddress = astrTemp
End If
End With
Set objRegEx = Nothing
Set objMatch = Nothing
End Function
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
Führe das Makro aus: Gehe zu Entwicklertools > Makros, wähle CopyMailAddress und klicke auf Ausführen.
Jetzt solltest du alle E-Mail-Adressen aus der ersten Tabelle in der zweiten Tabelle untereinander angezeigt bekommen.
Häufige Fehler und Lösungen
Alternative Methoden
-
Textfunktionen verwenden: Du kannst auch die Excel-Funktion FILTER verwenden, um E-Mail-Adressen aus einem Text zu extrahieren, wenn du Excel 365 hast. Beispiel:
=FILTER(A:A, ISNUMBER(SEARCH("@", A:A)))
-
Power Query: Nutze Power Query, um Daten aus Excel zu transformieren und nur die E-Mail-Adressen zu importieren.
Praktische Beispiele
Angenommen, du hast folgende Daten in Tabelle1:
A1: Mustermann, Max (Abteilung) <max>
A2: max.mustermann@bla.com
A3: Müller, Anna (Marketing) <anna>
A4: annam@company.com
Nach dem Ausführen des Makros sollten in Tabelle2 die E-Mail-Adressen wie folgt erscheinen:
B1: max.mustermann@bla.com
B2: annam@company.com
Tipps für Profis
-
Doppelte Einträge entfernen: Füge eine Zeile im Makro hinzu, um doppelte E-Mail-Adressen zu entfernen:
Worksheets("Tabelle2").Columns(1).RemoveDuplicates Columns:=1, Header:=xlNo
-
Automatisierung: Du kannst das Makro so anpassen, dass es beim Öffnen der Datei automatisch ausgeführt wird, um die E-Mails stets aktuell zu haben.
FAQ: Häufige Fragen
1. Wie kann ich die E-Mail-Adressen aus Excel in Outlook kopieren?
Du kannst die E-Mail-Adressen einfach kopieren und in ein neues E-Mail-Fenster in Outlook einfügen.
2. Gibt es eine Möglichkeit, E-Mail-Adressen direkt aus Outlook zu extrahieren?
Ja, du kannst die E-Mail-Adressen aus einem Outlook-Verteiler exportieren und dann mit den oben genannten Methoden in Excel bearbeiten.
3. Wie kann ich sicherstellen, dass alle E-Mail-Adressen erkannt werden?
Stelle sicher, dass die E-Mail-Adressen korrekt formatiert sind und keine zusätzlichen Zeichen enthalten, die die Erkennung verhindern könnten.