Hi,
im Alaska Forum habe ich einen LINK auf die VBA Hilfe von Word 2003 gefunden, dort kann man die nötigen Parameter von EXECUTE() nachlesen.
Damit habe ich das hier so übersetzt und es funktioniert:
Code: Alles auswählen
#include "activex.ch"
#include "word2010.ch"
//////////////////////////////////////////////////////////////////////
// Main()-Prozedur der Anwendung
//////////////////////////////////////////////////////////////////////
PROCEDURE main
LOCAL cDir,cFile, cSaveAs
LOCAL oWord,oDoc, aReplace
set charset to ansi
aReplace := { { "{Inhalt1}" , "Test-Dokument" } ,;
{ "Suchen" , "Ersetzen" } }
set alternate to Ersetzen-LOG.TXT
set alternate on
// Ermitteln des voll-qualifizierten Pfades
// oder fix vorgeben
cDir := CurDrive()+":\"+CurDir()
cFile := cDir+"\Test.docx"
cSaveAs := cDir+"\Test1.docx"
// Erzeugen einer ActiveX-Komponente
oWord := CreateObject("Word.Application")
IF Empty( oWord )
MsgBox( "Microsoft Word ist nicht installiert" )
ENDIF
oWord:visible := .T.
// Oeffnen eines Word-Dokuments
oWord:documents:open( cFile )
oDoc := oWord:ActiveDocument
aEval( aReplace, {|aR| WordReplace(oWord,aR[1],aR[2]) } )
// Speichern des Ergebnisses
IF(ValType(cSaveAs)=="C")
oDoc:saveas(cSaveAs)
ENDIF
/*
IF(ValType(lPrint)=="L" .AND. lPrint)
oDoc:PrintOut()
ENDIF
*/
// Schliessen des Dokuments und zerstoeren das
// ActiveX-Objektes.
oDoc:close()
oWord:Quit()
oWord:destroy()
? "Dokument", cSaveAs, "erzeugt"
set alternate to
inkey(20)
RETURN
function WordReplace(oWord,cVon,cNach)
local oSel, lOK
oSel := oWord:selection
oSel:Find:ClearFormatting()
oSel:Find:Replacement:ClearFormatting()
// aus der Word2003 Hilfedatei stammt die Parameterzeile
lOK := oSel:Find:Execute( cVon,; // FindText
.f.,; // MatchCase
.f.,; // MatchWholeWord
.f.,; // MatchWildcards
.f.,; // MatchSoundsLike
.f.,; // MatchAllWordForms
.t.,; // Forward
wdFindContinue,; // Wrap
.f.,; // Format
cNach,; // ReplaceWith
wdReplaceAll,; // Replace
.f.,; // MatchKashida
.f.,; // MatchDiacritics
.f.,; // MatchAlefHamza
.f. ) // MatchControl
? "ersetze",cVon,cNach, lOK
return lOK