WORD.Selection.Find.Execute Replace:=wdReplaceAll

hiho,

ich habe folgenden code:

Dim WORD As Object
Set WORD = CreateObject(„Word.Application“)

WORD.Selection.Find.Text = „alt“
WORD.Selection.Find.Replacement.Text = „neu“
WORD.Selection.Find.Execute Replace:=wdReplaceAll

ziel ist es in einem word dokument bestimmte textpasagen durch andere zu ersetzen.
(oben gezeigter Code zeigt nur ein beispiel zum testen)

wenn nun der code ausgeführt werden soll, dann kommt für „Replace:=wdReplaceAll“

der Fehler „Objekt nicht definiert“

— ich habe in den projektverknüpfungen das word NICHT verknüpft. das soll auch so bleiben.

kann mir jmd helfen oder hat jmd ne id woran es liegt oder man es kommt.

hi

dein problem ist, dass wdReplaceAll eine Word-Konstante ist, die im VB nicht standardmässig bekannt ist.

zwei möglichkeiten:

  • du schaust im objektbrowser nach, wie wdReplaceAll definiert ist, kommst drauf, dass es ein integer-feld mit dem wert 2 ist und baust damit ein deinem programm einfach diesen wert ein.

  • du hängst dir die word-bibliotheken in den projekt rein. hat nicht nur den vorteil, dass du dann die konstanten alle verwenden kannst sondern auch, dass du das word-objekt als word.application definieren kannst und nicht als object. damit hast du auch die auto-vervollständigung und die compilter-prüfung (=> weniger runtime-fehler).

lg
erwin

Hallo,

mit dem Befehl

.Selection.WholeStory

kannst Du den gesamten Text markieren.

Gruß
Klaus

kleiner nachtrag
hallo nochmal

ich vermute mal, dass es dir eh klar ist, aber der vollständigkeit halber:

mit

set word = createobject(„word.application“)

erzeugst du eine neue instanz von word, die kein dokument offen hat und daher kein selection-object kennt (selection ist eine eigenschaft des jeweils aktiven dokuments und wird global geführt, um den makro-programmierern das leben zu vereinfachen).

an die bestehende word-instanz kommst du mit

set word = getobject(,„word.application“)

ran. der beistrich vor dem parameter ist dabei absicht und kein tippfehler.

wie gesagt, aufgrund der art deiner fragestellung gehe ich davon aus, dass dir der unterschied klar ist - aber es lesen ev. auch andere diesen thread.

lg
erwin