Excel soll mit sendkeys an .html etwas senden

Hallo,
bei folgendem Code komme ich nicht recht weiter :frowning: hoffentlich kann mir ja jemand hier weiterhelfen.
*************************************************************

Sub senden()
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
'objIE.Visible = False
objIE.Navigate ("F:\senden.html")
Do While objIE.Busy
 Loop
Do While objIE.document.readyState "complete"
 Loop
SendKeys Cells(1, 1) & "~"
End Sub

************************************************************
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.
a) Wie muss der Code aussehen damit kein neues Fenster aufgemacht wird wenn schon eines besteht?
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‘?

Danke im Voraus für Tipps, Ideen, Codes…
Reinhard

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

Halo Kristian,
vielen Dank für deine Antwort, ich probiere demnächst mittels quit das Fenster zu schließen und immer nur zum senden zu öffnen, mal sehen ob das zeitlich (fentseraufbau und Schöießzeit) ok ist.
Ansonsten versuche ich mal die globale Definition.
Gruß
Reinhard
ps:

Wo hattest Du denn die Eigenschaften her, die Du verwendet hast
(z.B. Busy)?

Ach, die Problematik beschäftigt mich schon seit Monaten :frowning: naja, auch Monate dabei wo es in der Ecke lag bis dann neue Ideen kamen und dann nachts die Zeit verinnt:smile:
Ich habe da leider keine Bücher über vba, deshalb alles über google im Inet gefunden, also erst nach „excel vba internet explorer“ o.ä.gesucht, dann die Suche verfeinert…
Busy usw. habe ich also aus irgendeinem Gesamtcode im Inet.