使用URL中的数据填充excel列

时间:2018-03-22 11:24:42

标签: excel vba excel-vba

所以我有一种情况需要从URL填充特定的列(基本上,对该URL的get请求将给出一个数字列表)。

我是宏的新手,但我想建立一个系统,我将点击一个按钮,然后将读取数据并填充列。

修改

我有一个网址,让我们说161.202.176.187/importData.txt,它有以下数据。

12345
67890
12345
09876
87653
14214
14566
46131
12456
35098

现在在我的excel中,我有一个这样的按钮:

enter image description here

我需要使用数据填充列A1

2 个答案:

答案 0 :(得分:1)

如此提取?

Windows机器:

将引用添加到microsoft xml和html对象库VBE>工具>参考文献

此外,需要将XMLHTTP60调整(60位)到适合您的Excel版本。

' "http://161.202.184.168/excelimport.txt"

Sub Getinfo3()

    Dim http As New XMLHTTP60
    Dim html As New HTMLDocument

    With http
        .Open "GET", "http://161.202.184.168/excelimport.txt", False
        .send
        html.body.innerHTML = .responseText
    End With

   Dim returnArray() As String
   returnArray = Split(html.body.innerText, " ")

   Dim currentItem As Long

   For currentItem = LBound(returnArray) To UBound(returnArray)
       ActiveSheet.Cells(currentItem + 1, 1) = returnArray(currentItem)
   Next currentItem

End Sub

Internet Explorer版本(需要参考Microsoft Internet Controls和html对象库

Public Sub scrapeaIE()

    Dim appIE As Object
    Dim ihtml As Object

    Set appIE = CreateObject("internetexplorer.application")

    With appIE

        .Visible = True
        .navigate "http://161.202.184.168/excelimport.txt"

        While .Busy = True Or .readyState < 4: DoEvents: Wend

        Set ihtml = .document

    End With

    Dim returnArray() As String
    returnArray = Split(ihtml.body.innerText, vbNewLine)

    Dim currentItem As Long

    For currentItem = LBound(returnArray) To UBound(returnArray)
        ActiveSheet.Cells(currentItem + 1, 1) = returnArray(currentItem)
    Next currentItem

    appIE.Quit

    Set appIE = Nothing

End Sub

包括使用两者的参考文献(Excel 2016)

References

  1. 互联网控制
  2. XML库(excel的版本)
  3. HTML对象库(excel的版本)
  4. 编辑:

    对于Mac:

    您可以使用AppleScript and MacScript

    执行某些操作

    编辑:

    运行代码的OP开始在第一次运行后使用每个新URL返回缓存数据。与Excel-VBA REST WCF works on 1st call, but subsequent calls return cached (non-current) data

    相同

    决议是补充:

    .setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
    

    .send
    

答案 1 :(得分:0)

听起来像PowerQuery的工作,取决于您的Excel版本,它是内置的,或作为Microsoft的加载项提供。因此,对于Excel 2016,您只需单击数据选项卡,然后单击新查询&gt;来自其他来源&gt;从Web然后按照对话框和工作完成。

您可以从here

了解更多信息