Office - Word, Excel und Co. 9.753 Themen, 41.598 Beiträge

Hilfe!: Adressen aus Word in Excel übertragen...?!

peetyobi / 13 Antworten / Baumansicht Nickles

Hallo zusammen,


Ich habe ca. 4000 Anschreiben in Word-XP als .doc Datei. Am Anfang jedes Anschreiben steht eine postalische Adresse von Kunden: zB:


Peter Mustermann


Musterstr. 23


12345 Mustersatdt


Nun möchte ich diese Adressen in eine ExcelXP-Tabelle übertragen, die ungefähr so aussehen soll:


Peter; Mustermann; Musterstr.; 23; 12345; Musterstadt


(da wo das Semikolon steht soll eine neue Spalte bzw. Zelle beginnen)


Wie mache ich das am schnellsten mit so wenig Klicks wie möglich. Ich weiss das man mittels Transponieren die Zeilen aus Word in Spalten in Excel umwandeln kann. Das reicht mir aber nicht, da es zu lange dauert, und die Zeilen werden dabei auch nicht aufgeteil, dh. die Postleitzahl steht dann immer noch in der selben Zelle wie die Stadt. Man muss die dann wieder auseinanderfriemmeln. Ich habe es auch schon mit Makro-Aufzeichen versucht. Es erleichtert zwar bringt aber trotzdem nicht viel ein.


Hat jemand vielleicht ein VB-Script für mich?


Vielen Dank im Voraus!

bei Antwort benachrichtigen
rill peetyobi „Hilfe!: Adressen aus Word in Excel übertragen...?!“
Optionen

Du willst doch eine Adress-Datenbank, dann nimm also ein Datenbankprogramm und keine Tabellenkalkulation!

Dies ist jedenfalls mein Vorschlag. Wie man 4000 Adressen aus einer Word-Datei nach Access importiert, kann ich nicht genau sagen - da müßte man die Datenstruktur kennen und ein wenig rumprobieren.

Wenn die Adressdaten halbwegs strukturiert sind (z. B. tabellarisch oder durch TABs/Semikolon getrennt), kannst Du in Access über Daten -> extrerne Daten -> Importieren einen Import versuchen.

Ich habe so einen Import in Access z. B. mit über 1000 MP3 Daten/Titeln erfolgreich praktiziert. Ich habe vorher in der DOS-Box die Verzeichnisinhalte über den DIR-Befehl in ein Textdatei schreiben lassen. Die tabellarische Struktur ermöglichte dann den Export in eine Access-Datenbank. Die Nacharbeit war nur minimal.


rill

bei Antwort benachrichtigen
peetyobi Nachtrag zu: „Hilfe!: Adressen aus Word in Excel übertragen...?!“
Optionen

erstmal vielen dank für die antwort!
es handelt sich nicht um EINE word-datei sondern um 4000 word-dateien. es sind anschreiben mit empfängeradressen. diese müssen einzeln exportiert werden, und zwar in kürzerster zeit. warum nicht access? habe ich auch vorgeschlagen, der kunde möchte es aber in excel haben. es in access zu übertragen würde aber auch nicht gerade schneller gehen.
nein, die adressen sind nicht durch tabs oder semikolons getrennt.

peet

bei Antwort benachrichtigen
rill peetyobi „Hilfe!: Adressen aus Word in Excel übertragen...?!“
Optionen

Hat denn Dein Kunde nicht mit Seriendruck gearbeitet?? Dann würde eine Datenquelle für den Adress-Export zur Verfügung stehen.

Mir ist völlig unverständlich, wie man 4000 Kunden in herkömmlichen Briefdokumenten auflaufen lassen kann, ohne eine Adressen- bzw. Kundenverwaltung in Form einer Datenbank oder einfach nur in Form einer Word-Tabelle ...

Mit VBS kenne ich mich nicht aus, rein gefühlsmäßig stelle ich es mir schwer vor, den Adresstext automatisiert zu extrahieren. Eventuell geht es, wenn der Adesstext immer die gleiche Stuktur hat (exakt die gleichen Zeilen, eventuell Absatzzeichen).

Ich würde dem Kunden auch klarmachen, daß Access die weit bessere Wahl für eine Datenverwaltung ist. Besonders wenn der Adressenbestand weiterhin anwächst, wird man die Sortier- und Abfragemöglichkeite bei Access schätzen lernen!


rill

bei Antwort benachrichtigen
Olaf19 peetyobi „Hilfe!: Adressen aus Word in Excel übertragen...?!“
Optionen

Wenn der Kunde weiterhin auf Excel insistiert, bleibt noch die Möglichkeit, die Datenbank zunächst(!) in Access anzulegen und diese später in Excel zu öffnen. Gibt es im "Datenimport-Assistenten" von Access keine Möglichkeit, auch Leerzeichen als Trennzeichen akzeptieren zu lassen?

CU
Olaf

Die Welt ist ein Jammertal ohne Musik. Doch zum Glueck gab es Bach, Beethoven, Haendel und Goethe (Helge Schneider)
bei Antwort benachrichtigen
peetyobi Olaf19 „Hilfe!: Adressen aus Word in Excel übertragen...?!“
Optionen

es ist prinzipiel wurscht ob die adressen ins access oder excel übertragen werden sollen. von access gehts ganz schnell in excel und umgekehrt, das ist mir klar. nur die müssen von 4000 word dateien in eine datenbank konvertiert werden, sonst nichts.
ich weiss auch, dass es adressdatenbanken gibt, aber der kunde hat sie nun mal so (wie oben beschrieben) und ich habe den auftrag sie zu sortieren.

bei Antwort benachrichtigen
Olaf19 peetyobi „Hilfe!: Adressen aus Word in Excel übertragen...?!“
Optionen

Kann die Worddatei denn nicht mit einem Konvertierungsassistenten direkt in Access eingelesen werden, wenn die Leerzeichen als Trennungszeichen akzeptiert werden? Ich meine, das müsste gehen.

CU
Olaf

Die Welt ist ein Jammertal ohne Musik. Doch zum Glueck gab es Bach, Beethoven, Haendel und Goethe (Helge Schneider)
bei Antwort benachrichtigen
peetyobi Nachtrag zu: „Hilfe!: Adressen aus Word in Excel übertragen...?!“
Optionen

oh jej, ich muss zugeben es ist nicht einfach das problem zu schildern. entweder liegt es an meiner ausdrucksweise oder...

also, nochmal: es ist nicht EINE word-datei sondern 4000 mit je einer postalischen adresse, die in einer datenbank (excel, access, sql, lotus notes, oder was auch immer)oder einfach nur tabelarisch eingesammelt werden sollen. ...und jaha, der kunde hat es mittlerweile auch selbst begriffen, dass man adressen am besten in einer datenbank abspeichert, weil es so kosten spart.
was ich wissen wollte war nur, wie man am schnellsten diese adressen aus den word-datei(en!) herausbekommt. da word, excel, und access mit vb-scripten arbeiten, hoffte ich dass jemand so ein script schreiben kann oder bereits einen besitzt...

...aber lasst mal, vielen dank soweit. es blieb mir nichts anderes übrig als die adressen manuel und einzeln herrauszukopieren. war zwar viel arbeit...

bei Antwort benachrichtigen
Uli M peetyobi „Hilfe!: Adressen aus Word in Excel übertragen...?!“
Optionen

Hallo peetyobi,

Wie div. Vorgänger schon angedeutet haben, bräuchtest du dazu ein kleines Progi.
Voraussetzung ist u.a., dass sich die Adressdaten wirklich zuverlässig bestimmen lassen.
Denkbar hierzu wären verschiedenste (ggf. zu kombiniernde) Ansätze, die sich aber nur aus den Dok's ergeben können, z.B.:
- gesamter Adressblock (oder zumindest der Adressbeginn) ist mit einer Textmarke hinterlegt
- es kommen spez. Formatvorlagen zum Einsatz oder der Adressblock ist in einer Tabellenzeile oder Positionsrahmen
- der 1. Absatz einer Adresse ist z.B. immer der 12. im Dok-Hauptteil
- die Adressen bestehen immer aus z.B. 7 Absätzen, so dass etwa der 6. immer der mit Plz + Ort ist

Du wirst also zunächst die Erkenntnis-Möglichkeiten und Einheitlichkeit untersuchen müssen (Ausnahmen müssen definierbar sein), wenn du befriedigende Ergebnisse erreichen willst

Gruß
Uli

bei Antwort benachrichtigen
peetyobi Nachtrag zu: „Hilfe!: Adressen aus Word in Excel übertragen...?!“
Optionen

Hi Uli,

ich habe wohl doch etwas zu wenig Informationen über mich und vor allem über die vorhandenen Word-Dateien gemacht. So verliefen sich die Tips der obigen Teilnehmer nur in den Grundzügen der Materie, die mir jedoch leider nicht weiter helfen.
Dein Ansatz hört sich ählich an wie meine ersten Gedanken darüber wie man die Adressen aus den Dateien am besten herausbekommt.
Was mich angeht, um die Beschreibeung meiner bereits getätigten Versuche abzukürzen, waage ich zu behaupten mich mit der Materie genügend auszukennen um zu wissen welche Voraussetzungen vorhanden sein müssen, um einen computarisierten (scheiß Wort), automatisch ablaufenden Prozess zu entwickeln (man, was hab ich heut eingenommen...).
Ein kleines C oder Java Progrämmchen ist mir auch nicht frem (bereits selbst mal eingehackt). Kommen wir aber zum Hauptproblem:
Tatsache ist, dass die postalischen Adressen als erstes im Dokument stehen. Das ist aber auch das einzige was die Word-Dateien gemeinsam haben. Nicht einmal die Fonts sind einheitlich, geschweige denn die Zeilen seien identisch in der z.B. die Strasse steht. Es ist auch nicht immer der 7. Absatz die Stelle mit Plz und Ort. Sie hätten aber vielleicht eine einheitliche Textmarke: Jede Adresse beginnt mit einem Präfix "Herr" bzw. "Frau".
Was ich hoffte hier zu finden war, jemanden der ein ähnliches Problem bereits mit einem VB-Script oder anderem Progi! bereits gelöst hat.
Meiner, und wahrscheinlich auch Deiner, Meinung nach müsste es sich also um ein Programm handeln, das die erste 5-stellige Integer-Zahl im Dokument für eine Plz hält, bei den nachfolgenden Strings in der selben Zeile kann es sich nur um ein Ort handeln, die Zeile darüber ist die Strasse, und die Zeile darüber wiederum einen Vor- und Nachnamen enthält.

Die Ausnahmen, die Du erwähnst, sind jedoch auch zu oft vertreten, wobei sich wahrscheinlich ein Programmieraufwand für die "paar" Adressen nicht lohnen würde. So muss ich Wohl oder Übel zu der erschütternden Erkenntnis kommen, die Adressen manuel (Es lebe die Kopie-Paste!) zu übertragen.

Schönen Gruß
PeeT

PS: Auch wenn ich hier keine Lösung gefunden habe, ist es schön zu wissen, dass es zumindest immer nette Menschen gibt, die versuchen einem mit noch so kleinen Tips aus der Patsche zu helfen. ;-P

bei Antwort benachrichtigen
Uli M peetyobi „Hi Uli, ich habe wohl doch etwas zu wenig Informationen über mich und vor allem...“
Optionen

Hallo PeeT,

Sofern du's nicht schon anderweitig erledigt hast:
Ich hab mich mal nach deinen Angaben versucht, wobei ich natürlich keine großartige Test-Umgebung aufgebaut hab. Das Routinchen ist für ein neues Modul in bel. *.do? gedacht. Es erwartet alle zu untersuchenden Dok's im Pfad "PFAD". Ich würde empfehlen, zum Test mal mit wenigen anzufangen.
Es wird dann also in jedem Dok nach dem 1. rein numerischen Wort gesucht (CH-12345 wäre also "ungültig"), darüber wird die Strasse vermutet (allenfalls leere Absätze dazwischen) und im 1. Absatz Anrede, Vorname(n) und Nachnamen. Das Ergebnis wird einstweilen Tab-getrennt in ein leeres Dok ausgegeben.
Es bleibt sicher viel Spielraum für Unwägbarkeiten, aber vielleicht kannst du deinen Job zumindest abkürzen.
Bei recht vielen mag Word schon mal in die Knie gehen.
Ich denke, du schaffst notwendige Anpassungen/ggf. Erweiterungen allein, wenn nicht ...

Option Explicit

Type ADRESSE
Index As Long
Dok As String
Anrede As String
Vorname As String
Nachname As String
Straße As String
Plz As String
Ort As String
Rest As String
' ggf. weitere wie Ansprechpartner, ...
End Type

Sub AdressenAusDoksAuslesen()
Const PFAD = "U:\Test\Adressen" ' Pfad, in dem alle fraglichen *.doc stehen sollten
Dim aAdr() As ADRESSE
Dim objDoc As Word.Document
Dim lTot As Long, L As Long, lP As Long, lOk As Long
Dim sP As String

On Error Resume Next
With Application.FileSearch
.NewSearch
.LookIn = PFAD
.SearchSubFolders = False
.FileName = "*.doc" ' ggf. weiter einschränken oder erweitern
.Execute
lTot = .FoundFiles.Count
If lTot > 0 Then
Application.ScreenUpdating = False
For L = 1 To lTot
lP = 1: sP = ""
Set objDoc = Documents.Open(.FoundFiles(L), False, True, False)
With objDoc
StatusBar = "Dokument " & L & " von " & lTot & " wird verarbeitet: " & .Name
' "Plz suchen" => Mindest-Kriterium
Do While Not IsNumeric(sP)
' davon ausgehend, dass es sich stets um Absätze handelt
sP = Trim(.Paragraphs(lP).Range.Words(1).Text)
lP = lP + 1
If lP = .Paragraphs.Count Then Exit Do
Loop

If IsNumeric(sP) And lP > 2 Then
lP = lP - 1
ReDim Preserve aAdr(lOk)
aAdr(lOk).Index = L
aAdr(lOk).Dok = .Name
aAdr(lOk).Plz = sP
If .Paragraphs(lP).Range.Words.Count > 1 Then
sP = Trim(Mid(.Paragraphs(lP).Range, Len(sP) + 1))
If Len(sP) > 0 Then sP = Left(sP, Len(sP) - 1)
aAdr(lOk).Ort = sP
' darüber Strasse, ggf. leere Absätze dazwischen
Do While lP > 1
lP = lP - 1
sP = Trim(.Paragraphs(lP).Range.Text)
If Len(sP) > 1 Then
aAdr(lOk).Straße = Left(sP, Len(sP) - 1)
Exit Do
End If
Loop
' alles zwischen hier und 1. Absatz mal in Rest packen (ggf. Probs in Excel wg. Umbrüchen)
If lP > 2 Then
sP = .Range(.Paragraphs(2).Range.Start, .Paragraphs(lP).Range.End - 1)
' ggf. replace auf chr(10) und chr(13)
aAdr(lOk).Rest = Trim(sP)
End If
' 1. Absatz => natürlich bes. vage so
aAdr(lOk).Anrede = Trim(.Paragraphs(1).Range.Words(1).Text)
aAdr(lOk).Nachname = Trim(.Paragraphs(1).Range.Words(.Paragraphs(1).Range.Words.Count - 1).Text)
sP = Trim(.Range(.Paragraphs(1).Range.Words(1).End, .Paragraphs(1).Range.Words.Last.Start))
sP = Left(sP, Len(sP) - Len(aAdr(lOk).Nachname))
aAdr(lOk).Vorname = Trim(sP)
End If
lOk = lOk + 1
End If

.Close 0
End With
Application.ScreenUpdating = True
Next L
End If
End With

Ausgabe:
sP = ""
For L = LBound(aAdr) To UBound(aAdr)
sP = sP & aAdr(L).Index & vbTab _
& aAdr(L).Dok & vbTab _
& aAdr(L).Anrede & vbTab _
& aAdr(L).Vorname & vbTab _
& aAdr(L).Nachname & vbTab _
& aAdr(L).Straße & vbTab _
& aAdr(L).Plz & vbTab _
& aAdr(L).Ort & vbTab _
& aAdr(L).Rest & vbCrLf
Next L
' zunächst mal in ein leeres Dok, wenn's so halbwegs passt, ist *.xls nicht mehr weit
Set objDoc = Documents.Add
objDoc.Range.InsertAfter sP
End Sub

Gruß
Uli

bei Antwort benachrichtigen
peetyobi Nachtrag zu: „Hilfe!: Adressen aus Word in Excel übertragen...?!“
Optionen

Hi Uli!

Habe ganz verschwitzt mich noch bei Dir zu bedanken - ich Esel!
War so mit der Konvertierung beschäftigt...

Es hat soweit prima geklappt. Nachdem ich ein paar Parameter
geändert habe, hat das ganze sagen wir mal zu 80% hingehauen.
Das Script kann ich aber auch bestens für andere Konvertierungen
benutzen.

Vielen Dank nochmal!!!

Gruß
PeeT

bei Antwort benachrichtigen
Uli M peetyobi „Hilfe!: Adressen aus Word in Excel übertragen...?!“
Optionen

Hallo PeeT,

Merci für's Feedback und schön, dass es weitgehend geklappt hat!
Du warst jetzt aber hoffentlich nicht 3 Wochen mit Anpassungen etc. beschäftigt(?)
Aufgrund der doch recht spez. Ausgangslage glaube ich allerdings nicht, dass diese Routine so ohne weiteres auch für andere "Konvertierungen" geeignet ist, Ansätze davon wohl eher.

Gruß
Uli

bei Antwort benachrichtigen
peetyobi Nachtrag zu: „Hilfe!: Adressen aus Word in Excel übertragen...?!“
Optionen

nein, ich war natürlich nicht 3 wochen damit beschäftigt ;-) es sind inzwischen einfach andere arbeiten angefallen, mir ist nur eben grad als ich das script nochmal anwenden wollte eingefallen, dass ich noch kein feedback gepostet habe.

ps: warum bekommt man von diesem forum immer die gleiche anzahl benachrichtigungmails wie die anzahl der threads???

bei Antwort benachrichtigen