Wie kann die Mehrfachersetzung mit VBA in Word beschleunigt werden?
Ich schreibe ein Word-Makro, das ungefähr 1000 Wortpaare aus einer Excel-Datei liest und eine Word-Datei entsprechend ersetzt. Ganz am Anfang habe ich den folgenden Code für den Ersatz verwendet:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = SrcText
.Replacement.Text = DestText
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Es hat funktioniert, schien aber bei großen Word-Dateien etwas langsam zu sein. Dann habe ich versucht, zuerst den gesamten Inhalt in eine Zeichenfolgenvariable zu lesen, dort zu suchen und dann die Word-Datei zu ändern, wenn ein Ersatzziel gefunden wurde (obwohl ich nicht sicher bin, ob dies schneller sein kann).
Wann bin ich auf @ gestoßa etwas seltsame Inkonsistenz. Wenn Sie beispielsweise eine Word-Datei mit nur einer einzelligen Tabelle in der ersten Zeile erstellen:
dann erhalten Sie im VBA-Editor mit dem folgenden Code 2.
Debug.Print Len(ActiveDocument.Characters(2))
Ich weiß nicht, ob es andere Inkonsistenzen dieser Art gibt und bin dort hängen geblieben.
ibt es eine Problemumgehung oder gibt es eine andere Möglichkeit, den Austausch zu beschleunige