Johannes
2005-08-24 18:55:31 UTC
Ich verstehe das Objektmodell von Microsoft Word 2003 einfach nicht mehr. Mit
einem .vbs-Skript möchte ich mehrere bestimmte Word-Dokumente öffnen, mehrere
Begriffe auf einmal suchen und ersetzen und sie dann als Kopie abspeichern.
Bis zum dritten Teil des Skriptes (Auslesen der Begriffe und der in Angriff
zu nehmenden Dokumente, sowie das Öffnen der Dokumente) läuft alles
planmässig. Doch weder kann ich den Dokumenteninhalt auslesen, noch Begriffe
ersetzen noch als Kopie ordentlich abspeichern.
Ich gebe meinen Geist auf. Die verschiedenen Klassen und ihre Elemente
schwirren wild im Kopf umher. Trotz unzähliger Versuche(GetObject etc) in die
verschiedensten Richtungen trete ich auf immer wieder auf derselben Stelle.
Alptraumhaft. KANN MIR EINER HELFEN? Herzlichen Dank Johannes
'Sub LeseDatei
'*************************************************************************************
' Beschreibung: Suchen und Ersetzen von mehreren Begriffen in mehreren
Dateien als .vbs-Skript
' Vorgang: 1. Einlesen der Begriffe in das Array aSuE
' 2.Einlesen der zu bearbeitenden Worddokumentnamen und - pfade in das
Array aDoc
' 3.Dokumente öffnen, Begriffe ersetzen, als Kopie speichern und schliessen
'**************************************************************************************
Dim fso, handleSuE, s, msgA, aSuE
Dim handleDocL, d
Dim Word, DocInhalt, Doc, i, ii, mMsg
Const DateiLesen = 1
Const wdAenderungenSpeichern = 1
Set Word = CreateObject("Word.Application")
Set Doc = CreateObject("Word.Document")
Set fso = CreateObject("Scripting.FileSystemObject")
Set handleSuE = fso.OpenTextFile("c:\SuE.txt", DateiLesen) 'Datei mit
Ausdrücken zum Suchen und Ersetzen öffnen
s = handleSuE.ReadAll 'Datei alles lesen
s = Replace(s,VbCrLf,"|") 'Absatzzeichen in Trennzeichen konvertieren
aSuE=Split(s,"|",-1,1) 'Array bilden, aSuE(gerade)=Suchen ,
aSuE(Ungerade)=Ersetzen
handleSuE.Close 'Dateizugriff nach Beendigung schliessen
Set handleDocListe = fso.OpenTextFile("c:\DocListe.txt", DateiLesen)'Datei
mit Ausdrücken zum Suchen und Ersetzen öffnen
d = handleDocListe.ReadAll 'Datei alles lesen
d = Replace(d,VbCrLf,"|") 'Absatzzeichen in Trennzeichen konvertieren
'Array bilden, aDocL(gerade)=Dateiname u.Pfad der Originaldatei ,
aDocL(Ungerade)=Dateiname u.Pfad der Kopie mit ersetzenten Begriffen
aDocL=Split(d,"|",-1,1)
handleDocListe.Close 'Dateizugriff nach Beendigung schliessen
For i = 0 to UBound(aDocL,1) Step 2
Word.Documents.Open(aDocL(i)) 'Word-Dokument öffnen, Array
aDocL(ungerade)=Pfad und Name der Originaldatei
Word.Visible= true 'optional verstecken
Word.Documents.Add '
Set DocInhalt = Doc.Content 'Inhalt des Dokumentes zugreifen
For ii = 0 to UBound(aSuE,1) Step 2 'Begriffe Suchen und Ersetzen (SuE)
SuEInhalt.Find.Execute FindText=aSuE(ii), _
ReplaceWith=aSuE(ii+1), Replace=wdReplaceAll
Next
Word.Documents.SaveAs(aDocL(i+1)) 'Array aDocL(gerade)= Name und Pfad
der abzuspeichernden Kopie
Word.Documents.Close(aDocL(i+1))
Next
mMsg=MsgBox("Es wurden " & UBound(aSuE,1) /2 & " Begriffe in " &
UBound(aDocL,1) /2 & " Dateien ersetzt.", 0 , "Suchen & Ersetzen in mehreren
Dateien")
einem .vbs-Skript möchte ich mehrere bestimmte Word-Dokumente öffnen, mehrere
Begriffe auf einmal suchen und ersetzen und sie dann als Kopie abspeichern.
Bis zum dritten Teil des Skriptes (Auslesen der Begriffe und der in Angriff
zu nehmenden Dokumente, sowie das Öffnen der Dokumente) läuft alles
planmässig. Doch weder kann ich den Dokumenteninhalt auslesen, noch Begriffe
ersetzen noch als Kopie ordentlich abspeichern.
Ich gebe meinen Geist auf. Die verschiedenen Klassen und ihre Elemente
schwirren wild im Kopf umher. Trotz unzähliger Versuche(GetObject etc) in die
verschiedensten Richtungen trete ich auf immer wieder auf derselben Stelle.
Alptraumhaft. KANN MIR EINER HELFEN? Herzlichen Dank Johannes
'Sub LeseDatei
'*************************************************************************************
' Beschreibung: Suchen und Ersetzen von mehreren Begriffen in mehreren
Dateien als .vbs-Skript
' Vorgang: 1. Einlesen der Begriffe in das Array aSuE
' 2.Einlesen der zu bearbeitenden Worddokumentnamen und - pfade in das
Array aDoc
' 3.Dokumente öffnen, Begriffe ersetzen, als Kopie speichern und schliessen
'**************************************************************************************
Dim fso, handleSuE, s, msgA, aSuE
Dim handleDocL, d
Dim Word, DocInhalt, Doc, i, ii, mMsg
Const DateiLesen = 1
Const wdAenderungenSpeichern = 1
Set Word = CreateObject("Word.Application")
Set Doc = CreateObject("Word.Document")
Set fso = CreateObject("Scripting.FileSystemObject")
Set handleSuE = fso.OpenTextFile("c:\SuE.txt", DateiLesen) 'Datei mit
Ausdrücken zum Suchen und Ersetzen öffnen
s = handleSuE.ReadAll 'Datei alles lesen
s = Replace(s,VbCrLf,"|") 'Absatzzeichen in Trennzeichen konvertieren
aSuE=Split(s,"|",-1,1) 'Array bilden, aSuE(gerade)=Suchen ,
aSuE(Ungerade)=Ersetzen
handleSuE.Close 'Dateizugriff nach Beendigung schliessen
Set handleDocListe = fso.OpenTextFile("c:\DocListe.txt", DateiLesen)'Datei
mit Ausdrücken zum Suchen und Ersetzen öffnen
d = handleDocListe.ReadAll 'Datei alles lesen
d = Replace(d,VbCrLf,"|") 'Absatzzeichen in Trennzeichen konvertieren
'Array bilden, aDocL(gerade)=Dateiname u.Pfad der Originaldatei ,
aDocL(Ungerade)=Dateiname u.Pfad der Kopie mit ersetzenten Begriffen
aDocL=Split(d,"|",-1,1)
handleDocListe.Close 'Dateizugriff nach Beendigung schliessen
For i = 0 to UBound(aDocL,1) Step 2
Word.Documents.Open(aDocL(i)) 'Word-Dokument öffnen, Array
aDocL(ungerade)=Pfad und Name der Originaldatei
Word.Visible= true 'optional verstecken
Word.Documents.Add '
Set DocInhalt = Doc.Content 'Inhalt des Dokumentes zugreifen
For ii = 0 to UBound(aSuE,1) Step 2 'Begriffe Suchen und Ersetzen (SuE)
SuEInhalt.Find.Execute FindText=aSuE(ii), _
ReplaceWith=aSuE(ii+1), Replace=wdReplaceAll
Next
Word.Documents.SaveAs(aDocL(i+1)) 'Array aDocL(gerade)= Name und Pfad
der abzuspeichernden Kopie
Word.Documents.Close(aDocL(i+1))
Next
mMsg=MsgBox("Es wurden " & UBound(aSuE,1) /2 & " Begriffe in " &
UBound(aDocL,1) /2 & " Dateien ersetzt.", 0 , "Suchen & Ersetzen in mehreren
Dateien")
--
Johannes Lorenz
Bensheim ,Germany
***@web.de
Johannes Lorenz
Bensheim ,Germany
***@web.de