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