Seite 1 von 1

PureDispHelper und Word

Verfasst: 26.05.2008 13:05
von Susan20
Also erst mal vorweg: Die PureDisphelper-Lib ist wirklich eine tolle Sache.

Jetzt meine Frage: Ich kann ein Word-Objekt schaffen [dhCreateObject("Word.Application") ... ], ein neues Dokument anlegen [dhCallMethod(oWord, "Documents.Add")], ein Dokument öffnen [dhCallMethod(oWord, "Document.Open" .... )] und Text einfügen [dhCallMethod (oWord, "Selection.TypeText(%s)" ... ) ]. Aber wie kann ich ein schon geöffnetes(!) Word-Dokument "ansprechen", also beispielsweise dort einen Text einfügen?

Verfasst: 28.05.2008 09:17
von Andi
Diese Problem wurde schon paarmal gepostet (IE, Excel). Ich denke, man darf hier nicht mit dem COM-Objekt Word arbeiten, sondern mit dem Scripting Host. Hab mal das vbs-Example aus PureDisphelper modifiziert:

Code: Alles auswählen

Procedure.s VbsCodeErstellen()
   code$ = "Set objWord = GetObject(, " + #DQUOTE$ + "Word.Application" + #DQUOTE$ + ")" + #CRLF$
   code$ = code$ + "Set objSelection = objWord.Selection" + #CRLF$
   code$ = code$ + "objSelection.TypeText" + #DQUOTE$ + "Dies ist ein Test!" + #DQUOTE$ + #CRLF$
   ;Dokument noch in den Vordergrund holen:
   code$ = code$ + "Set objWshShell = CreateObject(" + #DQUOTE$ + "Wscript.Shell" + #DQUOTE$ + ")" + #CRLF$
   code$ = code$ + "objWshShell.AppActivate(" + #DQUOTE$ + "Word" + #DQUOTE$ + ")"
   ProcedureReturn  code$
EndProcedure

Define objVbs = dhCreateObject("MSScriptControl.ScriptControl")
Define.s Script

dhPutValue(objVbs, "Language = %T", @"VBScript")
Script = VbsCodeErstellen()
dhCallMethod(objVbs, "AddCode(%T)", @Script)
dhReleaseObject(objVbs)
objVbs = 0
Mit GetObject() fängt man das geöffnete Word-Dokument ein. Ist keines geöffnet, passiert halt nix!