VBA Excel通过更改URL中的日期从网站提取数据

时间:2016-03-31 03:31:03

标签: excel vba excel-vba

我对VBA非常陌生,所以感谢任何帮助。我正在尝试从此网站https://www.census.gov/construction/bps/txt/tb3u201601.txt中提取数据。网址中的201601代表2016年1月。我想创建一个程序,该程序循环到2003年的所有月份,并将所有数据放在Excel电子表格中。到目前为止,我已经写了一些东西隔离了日期(下面),但我无法弄清楚如何让它循环我需要的日期。再次感谢。

t.test

End Sub

2 个答案:

答案 0 :(得分:0)

在父级

添加循环
Sub Macro1()
    Dim startDate As Date
    Dim thisDate As Date
    Dim endDate As Date
    Dim string2 as String

    startDate = DateSerial(2003, 1, 1)
    endDate = DateSerial(2016, 4, 1)
    Dim i As Integer

    Do
        thisDate = DateAdd("m", i, startDate)
        string2 = Format(thisDate,"yyyyMM")
        Call Macro2 (string2)
        i = i + 1

    Loop While (thisDate <= endDate)

End Sub

将Macro2更改为接受字符串参数

Sub Macro2(str2 as string)
....

并在Macro2中删除此行

str2 = "201601"

答案 1 :(得分:-1)

你需要几个嵌套循环,一个用于几个月,一个用于多年。您可以将每个部分标注为Int,然后在每个部分上调用cStr()以将它们转换回字符串并将它们组合在一起。

Dim iYear, iMonth as Int

For iYear = 2003 to 2015
    For iMonth = 1 to 12
        str2 = cStr(iYear) & cStr(iMonth)
        'The rest of your code here...
    Next iMonth
Next iYear

您可能还需要找到一些方法来动态更改您启动每个表的位置。如果表格的行数相同,则可以将Range($A$2)引用替换为Range(Cells(iRow, 1).Address),并在每次循环时添加到iRow。 (iRow = iRow + [the number of rows in the table]