PureDispHelper und Word

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Susan20
Beiträge: 54
Registriert: 28.02.2008 22:00

PureDispHelper und Word

Beitrag 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?
Andi
Beiträge: 79
Registriert: 27.05.2008 17:29
Wohnort: Berlin

Beitrag 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!
PB + B4X = greatest tools on earth
Win 10 | PB 5.72
Antworten