VBA宏,从给定范围循环获取URL

VBA宏,从给定范围循环获取URL,vba,excel,Vba,Excel,我的代码当前的设置方式是,它从我在代码中指出的URL获取数据。然而,我实际上想在Sheet2中提供一个URL列表,它将循环通过该列表,直到提取出所有数据。我不想每次都要更新每个URL的代码。有成千上万。。。我怎么能做到呢 代码如下: Public Sub exceljson() Dim https As Object, Json As Object, i As Integer Dim Item As Variant Set https = CreateObject(

我的代码当前的设置方式是,它从我在代码中指出的URL获取数据。然而,我实际上想在Sheet2中提供一个URL列表,它将循环通过该列表,直到提取出所有数据。我不想每次都要更新每个URL的代码。有成千上万。。。我怎么能做到呢

代码如下:

 Public Sub exceljson()
    Dim https As Object, Json As Object, i As Integer

    Dim Item As Variant

    Set https = CreateObject("MSXML2.XMLHTTP")
    https.Open "GET", "https://min-api.cryptocompare.com/data/price?fsym=USD&tsyms=BTC", False
    https.Send

    Set Json = JsonConverter.ParseJson(https.responseText)

    i = 2
    For Each Item In Json.Items
        Sheets(1).Cells(i, 2).Value = Item
        i = i + 1
    Next
    MsgBox ("complete")
End Sub

我将在这里假装所有URL都在A列中:

Public Sub exceljson()
    Dim https As Object, Json As Object, i As Integer, j As Integer

    Dim Item As Variant

    Set https = CreateObject("MSXML2.XMLHTTP")

    For j = 1 to Sheets(2).UsedRange.Rows.count
        If Len(Trim$(Sheets(2).Cells(j, 1).Value2)) > 0 Then
            https.Open "GET", Trim$(Sheets(2).Cells(j, 1).Value2), False
            https.Send

            Set Json = JsonConverter.ParseJson(https.responseText)

            i = 2
            For Each Item In Json.Items
                Sheets(1).Cells(i, 2).Value = Item
                i = i + 1
            Next Item
        End If
    Next j

    MsgBox ("complete")
End Sub

为了安全起见,我喜欢使用trim()方法,这样我就不会捕获任何额外的内容了

在这里,我将假装所有的URL都在A列中:

Public Sub exceljson()
    Dim https As Object, Json As Object, i As Integer, j As Integer

    Dim Item As Variant

    Set https = CreateObject("MSXML2.XMLHTTP")

    For j = 1 to Sheets(2).UsedRange.Rows.count
        If Len(Trim$(Sheets(2).Cells(j, 1).Value2)) > 0 Then
            https.Open "GET", Trim$(Sheets(2).Cells(j, 1).Value2), False
            https.Send

            Set Json = JsonConverter.ParseJson(https.responseText)

            i = 2
            For Each Item In Json.Items
                Sheets(1).Cells(i, 2).Value = Item
                i = i + 1
            Next Item
        End If
    Next j

    MsgBox ("complete")
End Sub

我喜欢使用trim()方法以确保不会捕获任何额外内容

读取字符串数组中的Sheet2 URL范围,并循环数组执行其余代码您知道这是什么样子吗?我是一个完完全全的noob:(阅读字符串数组中的Sheet2范围的URL,然后循环数组执行其余的代码你知道那会是什么样子吗?)我是一个完完全全的noob:(嘿,我刚刚试过,它在这一行中出错了:如果Len(Trim$(Sheets(2).range(“a”&i.Value2))>0 Thenoof,是的,我的错应该是
如果Len(Trim$(Sheets(2).range(“A&j.价值2))> 0,然后/<代码>是我已经放置的关键部分,而不是J,最初是用数以千计的URL,我仍然会考虑使用数组或集合来循环,而不是不断地重放工作表。@ QHARR这是一个很好的点,我通常不使用这样大的DATAYEA集合,有时事情看起来很简单,我们不必费心。为了测试,我们总是在一些小事情上绊倒:DHey,我只是尝试了一下,它在这行中出错了:如果Len(Trim$(Sheets(2).Range(“A”&i.Value2))>0那么,是的,我的错应该是
If Len(Trim$(Sheets(2).Range(“A”&j.Value2))> 0,然后/<代码>是我已经放置的关键部分,而不是J,最初是用数以千计的URL,我仍然会考虑使用数组或集合来循环,而不是不断地重放工作表。@ QHARR这是一个很好的点,我通常不使用这样大的DATAYEA集合,有时事情看起来很简单,我们不必费心。为了测试,我们总是会被一些小事绊倒:D