Word macros extern aufrufen
Hallo,
ich habe folgende Aufgabenstellung zu lösen und würde mich freuen wenn mir jemand dazu Hinweise geben könnte:
Ich kann in einer 4D Datenbank mit einer "Live Window" Funktion Office Dokumente anschauen und bearbeiten. Soweit ich das überblicke werden die Dokumente dazu im Explorer geöffnet. Aus der 4D Anwendung habe ich die Möglichkeit beliebige shell Kommandos abzusetzen. Nun die Frage (n): Wie kann ich z.B. in einem vb script an das im Explorer geöffnete Dokument rankommen und da dann vorher aufgezeichnete Macros ausführen, wie z.B Inhalt der Zwischenablage an einer bestimmten Textmarke einfügen.
Ich hoffe die Frage ist soweit nachvollziehbar.
Vielen Dank im Voraus
Arnito
ich habe folgende Aufgabenstellung zu lösen und würde mich freuen wenn mir jemand dazu Hinweise geben könnte:
Ich kann in einer 4D Datenbank mit einer "Live Window" Funktion Office Dokumente anschauen und bearbeiten. Soweit ich das überblicke werden die Dokumente dazu im Explorer geöffnet. Aus der 4D Anwendung habe ich die Möglichkeit beliebige shell Kommandos abzusetzen. Nun die Frage (n): Wie kann ich z.B. in einem vb script an das im Explorer geöffnete Dokument rankommen und da dann vorher aufgezeichnete Macros ausführen, wie z.B Inhalt der Zwischenablage an einer bestimmten Textmarke einfügen.
Ich hoffe die Frage ist soweit nachvollziehbar.
Vielen Dank im Voraus
Arnito
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 65729
Url: https://administrator.de/contentid/65729
Ausgedruckt am: 14.11.2024 um 11:11 Uhr
8 Kommentare
Neuester Kommentar
in Vb besorgt man sich eine Referenz mit CreatObject- bzw GetObject-Funktion. Das erhaltene Objekt kennt das komplette Objektmodell der zugrundeliegenden Applikation.
Set ie = CreateObject("InternetExplorer.Application")
Damit erhält man auch Zugriff auf die Inhalte des Explorers.
Mit Sicherheit muss man sich dann noch auf analoge weise ein entsprechendes Officeobjekt erzeugen um dann die Makros anzustossen.
Set ie = CreateObject("InternetExplorer.Application")
Damit erhält man auch Zugriff auf die Inhalte des Explorers.
Mit Sicherheit muss man sich dann noch auf analoge weise ein entsprechendes Officeobjekt erzeugen um dann die Makros anzustossen.
GetObject liefert eine bestehende Explorerinstanz zurück. Normalerweise die mit der höchsten Prozessid. Ist ein bischen unsicher, wenn mehrere instanzen offen sind.
www.vbarchiv.net/commands/GetObject.php
Hier noch eine andere Variante:
www.xtremevbtalk.com/archive/index.php/t-247343.html
Damit geht man durch alle offenen Instanzen durch, schaut ob es ein IE ist. Da kann man sich prima reinhängen und auch gleich nachschauen ob es das richtige Dokument ist.
www.vbarchiv.net/commands/GetObject.php
Hier noch eine andere Variante:
www.xtremevbtalk.com/archive/index.php/t-247343.html
Damit geht man durch alle offenen Instanzen durch, schaut ob es ein IE ist. Da kann man sich prima reinhängen und auch gleich nachschauen ob es das richtige Dokument ist.
Das Beispiel is schon ganz gut, du musst nur warten bis die Seite auch fertig geladen ist. Siehe unten
Dim d as HTMLDocument
Dim IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate2 "http://becks.aknh.de/test.doc"
Dim d As HTMLDocument
While (IE.readyState <> 4)
'Warten bis das Document geladen ist
Wend
IE.Visible = True
Set d = IE.document
bei mir ist es allerdings so, dass sich Word anschließend öffnet. Ich würde also jetzt dann hergehen und die offene Wordinstanz mit GetObjekt einfangen.
Um eine bessere syntaxunterstützung zu bekommen, solltest du auf alle Fälle die Verweise
Mircosoft HTML Obejct Library
Microsoft Internet Controls
und
Mircosoft Word 1.0 Object Library
in das Projekt als verweis einbinden.
Ich hoffe das hilft soweit, bin nämlich die nächste vier Wochen in Urlaub.
Gruss
Dim d as HTMLDocument
Dim IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate2 "http://becks.aknh.de/test.doc"
Dim d As HTMLDocument
While (IE.readyState <> 4)
'Warten bis das Document geladen ist
Wend
IE.Visible = True
Set d = IE.document
bei mir ist es allerdings so, dass sich Word anschließend öffnet. Ich würde also jetzt dann hergehen und die offene Wordinstanz mit GetObjekt einfangen.
Um eine bessere syntaxunterstützung zu bekommen, solltest du auf alle Fälle die Verweise
Mircosoft HTML Obejct Library
Microsoft Internet Controls
und
Mircosoft Word 1.0 Object Library
in das Projekt als verweis einbinden.
Ich hoffe das hilft soweit, bin nämlich die nächste vier Wochen in Urlaub.
Gruss
Ich habe bei einem anderen Projekt mal nachgeschaut, wie das Problem dort gelöst wurde. Den Quelltext darf ich nicht weitergeben, aber da wird folgendes gemacht:
Die IE.-Instanz holt das betreffende Dokument und speichert es lokal zwischen. Anschließend wird es mit der dazu passenden Applikation wieder geöffnet.
Hoffe das hilft noch ein bischen mehr.
Die IE.-Instanz holt das betreffende Dokument und speichert es lokal zwischen. Anschließend wird es mit der dazu passenden Applikation wieder geöffnet.
Hoffe das hilft noch ein bischen mehr.