ik heb een vba project waar ik ie als object open. een aantal velden vul met waarden en uiteindelijk een raport genereer. dit rapport wordt gedwonload en uiteindelijk komt ie met een open/save/save as prompt. tot hier gaat alles goed. nu wil ik dat er automatisch op save geklikt word (of nog mooier save as maar dat is nog een stap verder.
ik kan nergens vinden hoe om te gaan met de prompt vanuit vba.
ik heb sendkeys geprobeert maar zodra er code achter het sendkeys comando staat voert hij die eerst uit voordat hij de send keys doet. als ik bv een lop plaats om tijd te krijfen om ie op te laten slaan wacht hij eerst op deze tijd en dan doet hij pas de send keys (of ie reageerd pas als de code is uitgevoerd.
ik vermoed dat doordat ie als object geopend is sendkeys pas geaccepteerd worden als vba er mee klaar is. klopt dit? kan dit anders? is er een ander wijze om ie te forceren het bestand op te slaan evt als save as?
ik kan nergens vinden hoe om te gaan met de prompt vanuit vba.
ik heb sendkeys geprobeert maar zodra er code achter het sendkeys comando staat voert hij die eerst uit voordat hij de send keys doet. als ik bv een lop plaats om tijd te krijfen om ie op te laten slaan wacht hij eerst op deze tijd en dan doet hij pas de send keys (of ie reageerd pas als de code is uitgevoerd.
Code:
Dim twait As Date
Dim tnow As Date
'wacht een bepaalde tijd voor hij wat gaat doen
twait = Time
twait = DateAdd("s", 10, twait)
Do Until tnow >= twait
tnow = Time
Loop
'kill eventueel bestaande internetexplorer sessies
Dim objWMI As Object, objProcess As Object, objProcesses As Object
Set objWMI = GetObject("winmgmts://.")
Set objProcesses = objWMI.ExecQuery( _
"SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'")
For Each objProcess In objProcesses
Call objProcess.Terminate
Next
Set objProcesses = Nothing: Set objWMI = Nothing
'delete bestaande file
On Error Resume Next
kill "C:\Users\xxxp\Downloads\xxxx.xls"
On Error GoTo 0
'open ie als object
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")
Dim OrgBox As Object
'open webpagina
objIE.Navigate "http://ac/verwijderd wegens privacy/ort.aspx?ItemPath=%2fH+WS%2fRpt_xx"
objIE.Visible = True
Do While objIE.ReadyState < 4: Loop
'vul cellen met waarden en klik button
Set OrgBox = objIE.Document.getElementById("ctl139_ctl00_ctl03_txtValue")
OrgBox.Value = Format(DateAdd("d", -14, Now()), "dd-mm-yyyy")
Set OrgBox = objIE.Document.getElementById("ctl139_ctl00_ctl05_txtValue")
OrgBox.Value = Format(DateAdd("d", 1, Now()), "dd-mm-yyyy")
Set OrgBox = objIE.Document.getElementById("ctl139_ctl00_ctl07_ddValue")
OrgBox.SelectedIndex = 6
Set OrgBox = objIE.Document.getElementById("ctl139_ctl00_ctl09_ddValue")
OrgBox.SelectedIndex = 1
Set OrgBox = objIE.Document.getElementById("ctl139$ctl00$ctl00")
OrgBox.Click
'loop om zeker te zijn dat pagina is geladen (readystate werkt niet hier dus check op verschijnen resultaten)
twait = Time
twait = DateAdd("s", 5, twait)
Do Until tnow >= twait
tnow = Time
Loop
Dim check As String
check = "True"
Do Until check = "False"
check = objIE.Document.getElementById("ctl139_ctl01_ctl01_ctl02").disabled
txtstatus = check
twait = Time
twait = DateAdd("s", 2, twait)
Do Until tnow >= twait
tnow = Time
Loop
Loop
'geef aan welk bestandsformaat je wilt downloaden en klik button
Set OrgBox = objIE.Document.getElementById("ctl139_ctl01_ctl05_ctl00")
OrgBox.SelectedIndex = 6
Set OrgBox = objIE.Document.getElementById("ctl139_ctl01_ctl05_ctl01")
OrgBox.Click
twait = Time
twait = DateAdd("s", 5, twait)
Do Until tnow >= twait
tnow = Time
Loop
'zodra titel van webpagina weer reportmanager is is het report klaar voor download
Do Until GetTitle = ("Report Manager - Internet explorer")
If Not GetTitle = "Report Manager - Internet explorer" Then check = False
twait = Time
twait = DateAdd("s", 1, twait)
Do Until tnow >= twait
tnow = Time
Loop
Loop
'OPEN/SAVE/SAVE AS balk verschijnt (ie11). verstuur alt s om te saven
SendKeys ("%{s}")
alle code die hier staat wordt eerst verwerkt voordat sendkeys wordt verwerkt. hierdoor komt de sendkeys te laat en wordt het bestand niet geheel gedownload als ik ie wil afsluiten.
ik vermoed dat doordat ie als object geopend is sendkeys pas geaccepteerd worden als vba er mee klaar is. klopt dit? kan dit anders? is er een ander wijze om ie te forceren het bestand op te slaan evt als save as?