【问题标题】:vba script for accesing webpage from a frame用于从框架访问网页的 vba 脚本
【发布时间】:2016-07-09 14:19:00
【问题描述】:

我正在尝试使用 VBA 脚本 excel 宏 link 从站点下载数据,但我感兴趣的数据位于网页框架内,主页和框架的 url 没有改变。

以下是在主页上运行良好的宏,请帮助我从网络框架中下载相同的宏。

 'Microsoft HTML Office Library
Sub webtable_NSE()
    Dim HTMLDoc As New HTMLDocument
    Dim objElementsTd As Object
    Dim objTd As Object
    Dim lRow As Long
    Dim myarray()
    Dim oIE As InternetExplorer
    Set oIE = New InternetExplorer
    oIE.navigate "https://www.nseindia.com/products/content/equities/ipos/ipo_current_quess.htm"

    'javascript:loadIpoBidDetails('/products/content/equities/ipos/Quess_curr_ipo_bid_details.htm')
    'oIE.Navigate "https://www.nseindia.com/products/content/equities/ipos/Quess_curr_ipo_bid_details.htm"

    Do Until (oIE.readyState = 4 And Not oIE.Busy)
        DoEvents
    Loop

    Application.Wait (Now + TimeValue("0:00:03"))
    HTMLDoc.body.innerHTML = oIE.Document.body.innerHTML
    With HTMLDoc.body
        Set elemcollection = .getElementsByTagName("Table")
        For t = 0 To elemcollection.Length - 1
            For r = 0 To elemcollection(t).Rows.Length - 1
                For c = 0 To elemcollection(t).Rows(r).Cells.Length - 1
                    ThisWorkbook.Sheets("NSE").Cells(ActRw + r + 1, c + 1) = elemcollection(t).Rows(r).Cells(c).innerText
                Next c
            Next r
            ActRw = ActRw + elemcollection(t).Rows.Length + 1
        Next t
    End With
    oIE.Quit
End Sub

【问题讨论】:

标签: excel vba


【解决方案1】:

没有 VBA,你也许可以做你想做的事。

在数据选项卡中,您可以单击来自 Web,地址:https://www.nseindia.com/products/content/equities/ipos/QUESS_curr_ipo_bid_details.htm,然后单击导入。之后,您可以将连接属性更改为“打开文件时刷新数据”或使用 VBA 控制何时刷新数据

【讨论】:

    【解决方案2】:

    如果您知道包含所需表格数据的 URL,则无需尝试使 IE 自动“到达那里” - 您只需针对该特定 URL 发送 HTTP 请求即可。您正在寻找的库是 MSXML2 XMLHTTP - 这是一个返回数据的代码示例:

    Option Explicit
    
    Sub GetTableData()
    
        Dim objRequest As Object
        Dim strUrl As String
        Dim strHtml As String
        Dim blnAsync As Boolean
    
        Set objRequest = CreateObject("MSXML2.XMLHTTP")
        strUrl = "https://www.nseindia.com/products/content/equities/ipos/QUESS_curr_ipo_bid_details.htm"
        blnAsync = True
    
        With objRequest
            .Open "GET", strUrl, blnAsync
            .Send
            While .readyState <> 4
                DoEvents
            Wend
            strHtml = .responseText
        End With
    
        Debug.Print strHtml
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-11
      • 2017-06-15
      • 1970-01-01
      • 2013-05-31
      相关资源
      最近更新 更多