Es funktioniert, d.h. die senden.html erhält wie geplant die
Daten aus Zelle A1. Aber bei jedem Aufruf wird ein neues
Fenster mit der senden.html eröffnet.
Ja, das ist ja klar. Dazu gibt es ja die _Create_Object-Funktion. Du mußt also das IE-Objekt _ein_mal anlegen und dann immer auf dieses Objekt zugreifen, bis Du es nicht mehr brauchst. Hier ein Beispiel:
Sub Main()
Dim objIE As Object
Dim s As String
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
s = InputBox("Seite:", "Seite aufrufen", "F:\senden.html")
Do While s ""
Call Seite\_Aufrufen(objIE, s)
s = InputBox("Seite:", "Seite aufrufen", s)
Loop
MsgBox "Schliessen des IEs ..."
objIE.Quit
Set objIE = Nothing
MsgBox "Fertig"
End Sub 'Main
Sub Seite\_Aufrufen(ByRef Objekt As Object, Seite As String)
With Objekt
.Visible = True
.Navigate (Seite)
Do While .Busy
Loop
Do While .document.readyState "complete"
Loop
End With 'Objekt
End Sub 'Seite\_Aufrufen
a) Wie muss der Code aussehen damit kein neues Fenster
aufgemacht wird wenn schon eines besteht?
Siehe Beispiel oben. Du mußt dafür sorgen, daß das IE-Objekt so lange bestehen bleibt, wie Du es benötigst. Im obigen Beispiel wird es innerhalb von „Main“ angelegt und innerhalb von „Seite_Aufrufen“ benutzt, und zwar mittels übergebenem Link auf das Objekt. Man könnte objIE auch global definieren und damit auf die Link-Übergabe (ByRef Objekt as Object) verzichten. Je nachdem, was geeigneter ist.
b) Mit visible auf ‚False‘ funtioniert nichts, wie muss der
Code lauten damit das senden.html-Fenster minimiert wird bzw.
bleibt und der Focus nach Aufruf wieder bei dem
Excel-Arbeitsblatt ist, oder noch besser gar nicht ‚weggeht‘?
Also um das SendKeys ausführen zu können, muß das Explorer-Fenster im Vordergrund zu sehen und aktiv sein. Höchstens danach könnte wieder auf Excel umgeschaltet werden.
Minimieren kann man ein Fenster mit der Tastenkombi [Alt]+[Leer] + [n]. Das könntest Du theoretisch nach Deiner Sendung an den IE senden. Allerdings muß sichergestellt sein, daß Deine Sendung auch komplett angekommen ist. Das interessiert SendKeys nämlich nicht, sondern schiebt einfach das nächste sofort hinterher. [Alt]+[Tab] wäre auch denkbar, vielleicht sogar besser, weil schneller.
Bei den Office-Applikationen gibt es die WindowState-Eigenschaft, mit der man auch minimieren kann. Vielleicht gibt´s sowas bei IE auch. Wo hattest Du denn die Eigenschaften her, die Du verwendet hast (z.B. Busy)?
Danke im Voraus für Tipps, Ideen, Codes…
Reinhard
Vielleicht hilft´s ja.
Kristian