• 0
Sign in to follow this  
LeandroLazari

MANUSEIO DO INTERNET EXPLORER ATRAVÉS DE VBA

Question

No rodapé deste site "http://sdro.ons.org.br/SDRO/DIARIO/index.htm" tem um ícone que faz o download de um arquivo .xls. Eu precisava clicar nele e salvar o arquivo, mas não sei como fazê-lo.

Segue o código, adaptado de um outro fornecido pelo danieltakeshi, das duas formas que eu tentei fazer (a segunda marcada com *) nas duas a página abre e não acontece nada.


    Sub TesteBusca()
    
        Dim IE As Object
        Dim sWindows As Object
        Dim sJanelas As Object
        Dim sDados As String
        Dim doc As MSHTML.HTMLDocument
    
        Set IE = CreateObject("InternetExplorer.Application")
    
        IE.navigate "http://sdro.ons.org.br/SDRO/DIARIO/index.htm"
        IE.Visible = True
    
        EsperaIE IE, 2000
    
        'Debug.Print IE.document.getElementsByTagName("frame")(1).contentDocument.getElementsByTagName("a").innerText
        i = 1
        For Each link In IE.document.getElementsByTagName("frame")(1).contentDocument.getElementsByTagName("a")
        'Debug.Print EXTRAIRELEMENTO(link.href, 8, "/")
            If EXTRAIRELEMENTO(link.href, 7, "/") = "DIARIO_18-03-2018.xlsx" Then
                i = i + 1
    
    
                link.Click
                 EsperaIE IE, 2000
                If i = 2 Then Exit For
            End If
    
        Next link    
    
    *    i = 1
    *    For Each link In IE.document.getElementsByTagName("frame")(1).contentDocument.getElementsByTagName("a")
    *        If link.getAttribute("scr") = "../img/exportxls.gif" Then
     *           i = i + 1
    
      *          link.Click
       *          EsperaIE IE, 2000
        *        If i = 2 Then Exit For
         *   End If
    
        *Next link   
        
    End Sub
    
    Public Sub EsperaIE(IE As Object, Optional time As Long = 250)
    'Código de: https://stackoverflow.com/questions/33808000/run-time-error-91-object-variable-or-with-block-variable-not-set
    Dim i As Long
    Do
        Sleep time
        Debug.Print CStr(i) & vbTab & "Ready: " & CStr(IE.READYSTATE = 4) & _
                    vbCrLf & vbTab & "Busy: " & CStr(IE.Busy)
        i = i + 1
    Loop Until IE.READYSTATE = 4 Or Not IE.Busy
    End Sub
    
    Function EXTRAIRELEMENTO(Txt As String, n, Separator As String) As String
        On Error GoTo ErrHandler:
        EXTRAIRELEMENTO = Split(Application.Trim(Mid(Txt, 1)), Separator)(n - 1)
        Exit Function
    ErrHandler:
        ' error handling code
        MsgBox "Erro, veriique os dados de entrada."
        EXTRAIRELEMENTO = CVErr(xlErrNA)
        On Error GoTo 0
    End Function
 

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this