Ich habe hier eine (ziemlich komplizierte aber machbare) Lösung:
Füge zuerst in deine Form ein "Microsoft Web Browser"-Control ein (Menu Create -> Object -> Control).
Nun gibts mühe das Control zu markieren, aber du kannst es in der Objektliste (unten links) auswählen. Es sollte nun "Microsoft Web Browser (Control)" heissen. Öffne den Baum mit einem Klick auf das "+". Zuoberst ist ein Event "Properties". Klicke darauf und ändere "(Name)" von "Microsoft Web Browser" zu "wbrMain".
Füge nun im "Globals"-Teil der Form im Teil "Declarations" folgende Deklaration hinzu:
Diese Variabel wird gebraucht, damit später das Formular nur einmal versendet wird.
Füge nun im Postopen-Event der Maske folgenden Code ein:
| Dim browser As Variant |
| |
| Set browser = Source.GetObject("wbrMain") |
| |
| firstNav = True |
| |
| browser.Navigate "www.google.ch" |
Dies bezweckt, dass das Control mal auf die Google-Seite navigiert.
Wähle nun wieder das Control in der Objektliste aus (ACHTUNG: Es heisst nun "wbrMain"). Suche das Event "Progresschange" (NavigateComplete2 hat bei mir nicht richtig funktioniert).
In diesem Event musst du folgenden Code einfügen:
| If progress < progressmax Then |
| Exit Sub |
| End If |
| |
| With source |
| .Document.Forms(0).q.Value = "diesistmeinsuchstring" |
| |
| |
| |
| |
| If firstNav Then |
| .Document.Forms(0).Submit |
| |
| firstNav = False |
| End If |
| End With |
Zuerst wird hier überprüft, ob das HTML-Dokument bereits vollständig geladen wurde, falls nicht wird noch ein weiterer Schritt gewartet. Falls das Dokument vollständig geladen wurde, füllt das Script das Textfeld mit einem String und versendet das Formular. Hier wird die Variable "firstNav" gebraucht. Falls diese nicht gesetzt wird, wird durch das "Submit" erneut ein HTML-Formular geladen und das Progresschange-Event wieder aufgerufen (Endlosschleife).
Wie die Felder im Formular heissen, kannst du im Quellcode der Dokumente entnehmen.
Am Besten machst du das Control am Ende mit einer Hide-When-Formel unsichtbar, damit die Benutzer nichts vom Prozess mitkriegen.
Grüsse
Moritz