Registriert seit: 27.03.2018
Version(en): Office 2011 für Mac
Hallo liebe Forumgemeinde,
schon oft habe ich mich hier durchs Forum geklickt, um schnell Antworten auf meine Fragen zu MS Office zu finden.
Doch dieses mal komme ich nicht mehr weiter. Nun habe ich mich registriert um euch meine (hoffentlich leicht zu beantwortende) Frage zu stellen.
Ich habe diverse Word Dateien, in diesen sind Adressetiketten welche ich in der Regel selbst ausgedruckt habe. Nun aber möchte ich diese von einer Druckerei direkt auf meine Briefe drucken. Dafür müssen die Adressdateien in eine Excelliste übertragen werden.
Meine Frage ist, wie ich dieses automatisieren kann, ohne jede Adresse einzeln in die Adressfelder zu kopieren.
Anbei sende ich die beiden Dateien zur Veranschaulichung.
Ich freue mich über jede Antwort!
Viele Grüße
Falko
Vorlage_Adressdatei.xls (Größe: 30 KB / Downloads: 10)
Adressetiketten-Muster.doc (Größe: 34,5 KB / Downloads: 11)
Registriert seit: 10.04.2014
Version(en): Office 2019
27.03.2018, 09:30
(Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2018, 09:30 von Jockel.)
gelöscht. ich hatte die Druckerei übersehen... sorry
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht
"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Folgende(r) 1 Nutzer sagt Danke an Jockel für diesen Beitrag:1 Nutzer sagt Danke an Jockel für diesen Beitrag 28
• falkowi
Registriert seit: 06.12.2015
Version(en): 2016
Hallo,
mit folgendemCode werden die Adressen im Word-Dokument gelesen. Damit ist ein Umwandlung in das gewünschte Format und die Übertragung nach Excle möglich.
Code: Sub T_1()
Debug.Print ThisDocument.Tables(1).Columns.Count, ThisDocument.Tables(1).Rows.Count
With ThisDocument.Tables(1)
For i = 1 To .Rows.Count
For j = 1 To .Columns.Count Step 2
Debug.Print .Cell(i, j).Range.Text
Next j
Next i
End With
End Sub
Frage: Gibt es viele Dateien mit jeweils 1 Seite oder weniiger Dateien mit mehreren Seiten? Liegen die in einem Ordner?
mfg
Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28
• falkowi
Registriert seit: 27.03.2018
Version(en): Office 2011 für Mac
(27.03.2018, 09:38)Fennek schrieb: Frage: Gibt es viele Dateien mit jeweils 1 Seite oder weniiger Dateien mit mehreren Seiten? Liegen die in einem Ordner?
mfg
Hallo Fennek,
vielen Dank für die Antwort! Es sind aktuell 45 Word Dateien mit jeweils einer Seite welche in einem Ordner liegen. Diese könnte man ja aber sicherlich einfach zusammenfügen.
Das mit dem Code habe ich ehrlich gesagt noch nicht ganz verstanden Würde mich über eine kurze Erklärung sehr freuen.
Registriert seit: 06.12.2015
Version(en): 2016
Hallo,
gut, ist ist kein Problem nacheinander die *.doc Dateien eines Ordners auszulesen.
Dann bleibt die zentrale Frage: In Excel müssen die Adressen einzelnen Zellen zuwiesen werden: Ist die Struktur des gezeigten Beispiels für ALLE Adressen identisch?
mfg
(ich hoffe, dass du Grundkenntnisse in VBA hast)
Registriert seit: 27.03.2018
Version(en): Office 2011 für Mac
(27.03.2018, 09:55)Fennek schrieb: Dann bleibt die zentrale Frage: In Excel müssen die Adressen einzelnen Zellen zuwiesen werden: Ist die Struktur des gezeigten Beispiels für ALLE Adressen identisch?
(ich hoffe, dass du Grundkenntnisse in VBA hast)
Die Struktur ist immer gleich. Lediglich fehlen (leider) bei einigen Adressen die Vornamen. Oftmals steht also nur der Nachname in der Word Datei. Aber dieses könnte ich auch später händisch abändern.
Ich bin leider kein Programmierer. Grundkenntnisse in Excel sind vorhanden und ich bin lernbereit Ich hoffe es ist keine zu komplizierte Sache...
Registriert seit: 06.12.2015
Version(en): 2016
Hallo,
der Code liest alle Etiketten einer Datei in ein Array (das später nach xl übertragenwird)
Teste den Code bitte im Einzelschrittmodus F8.
Code: Type Adresse
Gender As String
VorNm As String
NachNm As String
Str As String
Nr As Integer
PLZ As String
Stadt As String
End Type
Sub T_1()
Dim Adr(1000) As Adresse
With ThisDocument.Tables(1)
For i = 1 To .Rows.Count
For j = 1 To .Columns.Count Step 2
Tx = Split(.Cell(i, j).Range.Text, Chr(13))
Adr(a).Gender = Trim(Tx(0))
Adr(a).NachNm = Trim(Tx(1))
Adr(a).Str = Trim(Tx(2))
Adr(a).PLZ = Split(Trim(Tx(3)))(0)
Adr(a).Stadt = Split(Trim(Tx(3)))(1)
Next j
a = a + 1
Next i
End With
End Sub
Wenn du die Maus über z.B. Adr(a).Gender fährst, wird der aktuelle Wert gezeigt.
Wenn alles passt folgt die Übertragung nach xl, im 1. Test für eine Doc-Datei, danach dann für alle.
mfg
Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28
• falkowi
Registriert seit: 29.09.2015
Version(en): 2030,5
Makro in Excel:
Code: Sub M_snb()
With GetObject("G:\OF\adressetiketten_001.docx")
sn = Split(.Content, Chr(7) & vbCr)
.Close 0
End With
For j = 0 To UBound(sn)
st = Split(sn(j), vbCr)
sheets(1).Cells(Rows.Count, 1).End(xlup).Offset(1).Resize(, UBound(st) + 1) = st
Next
End Sub
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• falkowi
Registriert seit: 27.03.2018
Version(en): Office 2011 für Mac
(27.03.2018, 10:12)Fennek schrieb: der Code liest alle Etiketten einer Datei in ein Array (das später nach xl übertragenwird)
Teste den Code bitte im Einzelschrittmodus F8.
Wenn du die Maus über z.B. Adr(a).Gender fährst, wird der aktuelle Wert gezeigt.
Wenn alles passt folgt die Übertragung nach xl, im 1. Test für eine Doc-Datei, danach dann für alle.
Erst einmal besten Dank!
Ist es möglich mir die Schritte als absoluten Anfänger noch zu erklären? Oder finde ich hier im Forum eine Anleitung?
Habe gerade etwas rumprobiert. Bin in der Word Datei auf Extras -> Macro -> Visual Basic Editor
Soweit richtig?
Danach öffnet sich dann ein Fenster mit "Projekt" anbei ein Screenshot.
Und dann wirds kompliziert, wo muss der Code eingefügt werden?
Ich habe es bei This Document probiert. Bekomme dann aber die Fehlermeldung "Fehler beim Kompilieren" Der benutzerdefinierte Typ "Puclic" kann in einem Objektmodul nicht definiert werden.
Registriert seit: 06.12.2015
Version(en): 2016
27.03.2018, 10:36
(Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2018, 10:37 von Fennek.)
Hallo,
so effizient wie snb bekomme ich das nicht hin:
Code: Type Adresse
Anrede As String
VorNm As String
NachNm As String
Str As String
Nr As Integer
PLZ As String
Stadt As String
End Type
Sub T_1()
Dim Adr(1000) As Adresse
Dim Xl As Object: Set Xl = CreateObject("Excel.Application")
Dim WB As Object
With ThisDocument.Tables(1)
For i = 1 To .Rows.Count
For j = 1 To .Columns.Count Step 2
Tx = Split(.Cell(i, j).Range.Text, Chr(13))
Adr(a).Anrede = Trim(Tx(0))
If InStr(1, Trim(Tx(1)), " ") > 0 Then
Adr(a).VorNm = Split(Trim(Tx(1)))(0)
Adr(a).NachNm = Split(Trim(Tx(1)))(1)
Else
Adr(a).NachNm = Trim(Tx(1))
End If
Adr(a).Str = Split(Trim(Tx(2)))(0)
Adr(a).Nr = Split(Trim(Tx(2)))(1)
Adr(a).PLZ = Split(Trim(Tx(3)))(0)
Adr(a).Stadt = Split(Trim(Tx(3)))(1)
Next j
a = a + 1
Next i
End With
Set WB = Xl.Workbooks.Add
Xl.Visible = True
With WB.sheets(1)
For i = 0 To a
.Cells(i + 2, 3) = Adr(i).Anrede
.Cells(i + 2, 5) = Adr(i).VorNm
.Cells(i + 2, 6) = Adr(i).NachNm
.Cells(i + 2, 7) = Adr(i).Str
.Cells(i + 2, 8) = Adr(i).Nr
.Cells(i + 2, 10) = Adr(i).PLZ
.Cells(i + 2, 11) = Adr(i).Stadt
Next i
End With
Set Xl = Nothing
End Sub
Für die nächsten Stunden bin ich nicht am PC.
mfg
(dies ist ein Word-Makro)
|