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

"gesäuberten" Outlookverteiler in xls-Liste

"gesäuberten" Outlookverteiler in xls-Liste
03.02.2017 15:13:02
Axel
Hallo,
ich versuche, aus einem aus Outlook kopierten Verteiler mit einigen doppelten Adressen eine einfache Mailing-Liste zu erstellen:
Aus der Zwischenablage kommt das:
Vor1, Nach1 ; Vor2, Nach2 ; Vor3, Nach3 ; Vor2, Nach2
aus dem das hier werden soll (als Excel oder csv):
Vor1.Nach1@domain.de
Vor2.Nach2@domain.de
Vor3.Nach3@domain.de
In Word schaffe ich die Zeilenumbrüche zu erzeugen und die Sortierung, dann in Excel, die E-Mail zu "extrahieren" und die Duplikate rauszunehmen, jedoch nur, indem ich die Daten per Zwischenablage manuell übernehme.
Mit 1/4-VBA-Wissen und Makro aufzeichnen und anpassen habe ich das hier schon geschafft:
In Word:

Sub linebreak_sort()
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "; "
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Sort ExcludeHeader:=False, FieldNumber:="Absätze", SortFieldType _
:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, FieldNumber2 _
:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _
wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _
wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _
:=wdEnglishUS, SubFieldNumber:="Absätze", SubFieldNumber2:="Absätze", _
SubFieldNumber3:="Absätze"
Selection.Copy
Selection.WholeStory
Selection.Delete Unit:=wdCharacter, Count:=1
ActiveDocument.Save
End Sub

In Excel:

Sub Unikatliste()
Dim ZeilenZahl As Long
Dim Zelle As Range
Dim intAuf As Integer
Dim intLen As Integer
Dim Str As String
Dim emailZeilenZahl As Long
ZeilenZahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
With ActiveSheet
.Range("A1:A" & ZeilenZahl).AdvancedFilter Action:=xlFilterCopy, _
copyToRange:=.Range("B1"), unique:=True
End With
emailZeilenZahl = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
For Each Zelle In ActiveSheet.Range("B1:B" & emailZeilenZahl)
Str = Zelle.Value
intAuf = InStr(Str, "") - intAuf
Zelle.Value = Mid(Str, intAuf, intLen)
Next Zelle
Cells.EntireColumn.AutoFit
Range("B1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
End Sub

Ergebnis ist eine sortierte Liste mit "einfachen" E-Mail-Adressen (die anstelle in einer zweiten Spalte kopiert noch netterweise in ein neues Excel-Sheet gespeichert werden könnten, was jedoch zweitrangig ist).
Mein Problem: Wie bekomme ich die Daten automatisch in Excel zur Weiterverarbeitung. Ich müsste ja aus Word heraus die Excel-Datei mit dem Makro öffnen, den Inhalt rüberkopieren und dann das Makro in Excel ausführen. Oder andersherum aus Excel die Word usw.
Das so etwas geht, meine ich, aus z.B. https://www.herber.de/forum/archiv/976to980/977151_Variablen_von_Word_nach_Excel_uebergeben.html
herauszulesen. Das übersteigt jedoch meine VBA-Fähigkeiten bei Weitem.
Hat jemand einen Tipp, wie man das gut (und für mich verständlich) verbinden kann? Oder wird das so oder so so kompliziert, wie in dem Link?
Grüße
Axel

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "gesäuberten" Outlookverteiler in xls-Liste
07.02.2017 18:26:15
Tino
Hallo,
hier eine VBA Variante.
Sub ListMailAdress()
Dim sZWTxT$, sDomain$
Dim ArData
Dim n&
Dim oDic As Object

'Text aus Zwischenablage *****************************************
sZWTxT = "Vor1, Nach1 ; Vor2, Nach2 ; Vor3, Nach3 ; Vor2, Nach2"
'Domain angeben
sDomain = "@domain.de"
'*****************************************************************

'Text aufbereiten
sZWTxT = Replace(sZWTxT, " ", "")
sZWTxT = Replace(sZWTxT, ",", ".")
'In Array splitten, Trennzeichen = ;
ArData = Split(sZWTxT, ";")

'Duplikate entfernen
Set oDic = CreateObject("Scripting.Dictionary")
For n = Lbound(ArData) To Ubound(ArData)
oDic(ArData(n)) = ArData(n) & sDomain
Next n

'Ausgabe
With Tabelle1
'evtl. alte Daten löschen
.Range("A2", .Cells(.Rows.Count, 1)).Clear
'Ausgabe
.Range("A2").Resize(oDic.Count) = Application.Transpose(oDic.items)
End With
End Sub
Gruß Tino
Anzeige

237 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige