Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 4281 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 ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Exchange Server
gelöst Exchange und Dateisystem - Ordner extern archivieren und zusammenführen (10)

Frage von FA-jka zum Thema Exchange Server ...

Microsoft Office
gelöst Wie kann man die Standard-Schriftart bei einfügen von Text in Word 2013 festlegen? (3)

Frage von Rene1976 zum Thema Microsoft Office ...

Microsoft Office
Rechnungen in Word - zu lange Formel (2)

Frage von traller zum Thema Microsoft Office ...

Windows Server
gelöst Word 2010 : Absatz - Abstand per GPO ändern (3)

Frage von johanna-p zum Thema Windows Server ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (14)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...