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?
PureDispHelper und Word
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:
Mit GetObject() fängt man das geöffnete Word-Dokument ein. Ist keines geöffnet, passiert halt nix!
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
PB + B4X = greatest tools on earth
Win 10 | PB 5.72
Win 10 | PB 5.72