ie obj open en save as

Status
Niet open voor verdere reacties.

manueld

Gebruiker
Lid geworden
12 feb 2012
Berichten
216
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.

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?
 
Download "autohotkey", hiermee kan je toetstaanslagen en muiskliks simuleren, zelfs afhankelijk van het venster dat open staat.
Het kan ook de manier die je al aangegeven hebt, maar aangezien het waarschijnlijk een intranet site is kan ik je niet verder helpen.
 
ik heb helaas de limitatie dat ik geen software op mijn laptop mag instaleren en dergelijke software wil systeembeheer er ook niet op hebben dus helaas. ik zoek echt een vba oplossing.

is er een manier op de svae of saveas knop in te drukken in ie11 als ie als object gekoppelt is in vba
 
Heb je een plaatje van het save as dialog, dan kan ik zien of het standaard windows dialog is of een eigengemaakt dialog.
Het je een voorbeeld site die ik kan bereiken met eenzelfde dialog, zodat ik code kan testen.
 
saveas Internet Explorer.png



saveas Internet Explorer2.png

het is de standaard melding van ie 11
 
Laatst bewerkt:
elke site waar je een bestand kan download geeft deze melding. let wel op dat in dit geval de download is geinitieerd door de site. downloaden door de url op te geven met een saveas optie kan dus niet
 
de sendkeys methode werkt wel maar alleen als het venster actief is. dit is erg onhandig. dus zoals eerder aangegeven is er een andere methode?



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 denk niet dat het gaat lukken met VBA-code.
 
Kan je dan de focus niet op IE leggen, of werkt dat niet?
Het is maar een gedachte.
Code:
AppActivate ("Windows Internet explorer")
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan