Ir para conteúdo
Fórum Script Brasil
  • 0

MANUSEIO DO INTERNET EXPLORER ATRAVÉS DE VBA


LeandroLazari

Pergunta

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
 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...