Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Word macros extern aufrufen

Frage Entwicklung VB for Applications

Mitglied: arnito

arnito (Level 1) - Jetzt verbinden

08.08.2007, aktualisiert 09.08.2007, 4316 Aufrufe, 8 Kommentare

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
Mitglied: sebele
08.08.2007 um 14:24 Uhr
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.
Bitte warten ..
Mitglied: arnito
08.08.2007 um 15:07 Uhr
Danke für die schnelle Antwort, da ich in vb recht unerfahren bin kann ich damit aber noch nicht so richtig viel Anfangen.
In meinem Fall ist das Wordfile im Explorer bereits geöffnet, ich müßte also mit GetObject erstmal das richtige explorer Fenster festellen (oder?) und dann an diese Instanz die entsprechen vb script befehle absetzen. Wie kann ich das richtige Fenster festellen, über den Dateinamen der geöffneten Datei?

Danke Arnito
Bitte warten ..
Mitglied: sebele
08.08.2007 um 15:27 Uhr
GetObject liefert eine bestehende Explorerinstanz zurück. Normalerweise die mit der höchsten Prozessid. Ist ein bischen unsicher, wenn mehrere instanzen offen sind.

http://www.vbarchiv.net/commands/GetObject.php">http://www.vbarchiv.net/commands/GetObject.php

Hier noch eine andere Variante:

http://www.xtremevbtalk.com/archive/index.php/t-247343.html">http://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.
Bitte warten ..
Mitglied: arnito
08.08.2007 um 15:39 Uhr
Hallo Sebele,
da komme ich der Sache doch näher, vor allem wenn da etwas Beispielcode dabei ist, an dem man sich entlanghangeln kann. Vielen Dank schonmal!

Arnito
Bitte warten ..
Mitglied: arnito
09.08.2007 um 13:37 Uhr
Hallo,
mir scheint die zweite Varinate das richtige zu sein allerding kann ich mit folgendem Satz nicht viel anfangen:
"This requires a reference to Microsoft Internet Controls and to Microsoft Shell Controls and Automation. You can also choose to not add the references, but then replace the variable declarations with As Object." Deswegen klappt es warscheinlich auch nicht.

Zum Probieren habe ich in der Zwischenzeit mal folgendes mit einem durch das script selbst geöffnetem Fenster probiert:

Dim IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate2 "http://becks.aknh.de/test.doc"
IE.Visible = True

Das öffnet mir wie gewünscht test.doc im IE was mir aber nicht gelingt ist diese eingebettete wordinstanz mit vb befehlen anzusprechen, also in dem Dokument Text einzufügen etc., geht das überhaupt?

Vielen Dank

Arnito
Bitte warten ..
Mitglied: sebele
09.08.2007 um 14:14 Uhr
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
Bitte warten ..
Mitglied: arnito
09.08.2007 um 14:32 Uhr
Hallo,
das probier ich gleich mal und werd mich da schon irgenwie durchhangeln. Vielen Dank und einen schönen Urlaub!

Arnito
Bitte warten ..
Mitglied: sebele
09.08.2007 um 14:43 Uhr
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.
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Standard Ansicht Word Navigationsleiste (9)

Frage von leofabian zum Thema Microsoft Office ...

Visual Studio
Vb.net Datenfelder aus Word 2003 Dokument auslesen (3)

Frage von Herbrich19 zum Thema Visual Studio ...

Microsoft Office
gelöst Schnellbausteine aus Word 2007 nach Word 2016 übernehmen (2)

Frage von TiTux zum Thema Microsoft Office ...

PHP
WebShop direkt in PHP aufrufen ohne Webserver (9)

Frage von StefanKittel zum Thema PHP ...

Neue Wissensbeiträge
Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Erkennung und -Abwehr

Ccleaner-Angriff war nur auf große Unternehmen gemünzt

(10)

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Sicherheit

Eventuell neue Lücke in Intels ME

Information von sabines zum Thema Sicherheit ...

Heiß diskutierte Inhalte
Humor (lol)
Freidach Beitrag (36)

Frage von Penny.Cilin zum Thema Humor (lol) ...

Windows 7
SSD - Win7 Lags (19)

Frage von ph5555 zum Thema Windows 7 ...