我有一个Excel宏来分析从网页中提取的数据。我研究水质并运行监测网络。在这些地方,我有自动水采样器在风暴期间发射。
我使用此宏从我们的网站提取描述性数据。它最初是以静态方式设置的,为每个站点创建一个新表(总共有9个站点),代码很长且重复。我想使用for循环重写它,以便为每个站点执行相对少量的代码,并以我已设置的相同格式返回相同的信息。
原始脚本有几个部分基本上是针对每个站点进行硬编码的,因为它们具有站点名称和编号。
我在代码中有一个网址,除了最后的网站编号外,每个网站都是相同的。
旧宏首先制作工作表(“sheet1”)。选择...然后运行其余代码。下一个站点被硬编码为表格(“sheet2”)。选择等等。
以下是我正在使用的代码示例:
Workbooks.Add
Worksheets.Add().Name = "Rivers Ridge Summary"
Worksheets.Add().Name = "Sheppard Data"
Worksheets.Add().Name = "Sheppard Summary"
Worksheets.Add().Name = "Lucas Creek Data"
Worksheets.Add().Name = "Lucas Creek Summary"
Worksheets.Add().Name = "Ramsgate Data"
Worksheets.Add().Name = "Ramsgate Summary"
Worksheets.Add().Name = "Professional Place Data"
Worksheets.Add().Name = "Professional Place Summary"
Sheets("Sheet1").Select
Sheets("Sheet1").Name = "Rivers Ridge Data"
Sheets("Rivers Ridge Data").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://waterdata.usgs.gov/va/nwis/uv?cb_72199=on&cb_63680=on&cb_99234=on&format=rdb&period=1&site_no=0204279245" _
, Destination:=Range("$A$1"))
.Name = _
"uv?cb_72199=on&cb_63680=on&cb_99234=on&format=rdb&period=1&site_no=0204279245"
...等。等等..这里的所有其余代码..然后是下一个网站
Sheets("Sheppard Data").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://waterdata.usgs.gov/va/nwis/uv?cb_72199=on&cb_63680=on&cb_99234=on&format=rdb&period=1&site_no=0204289989" _
, Destination:=Range("$A$1"))
.Name = _
"uv?cb_72199=on&cb_63680=on&cb_99234=on&format=rdb&period=1&site_no=0204289989"
..然后是所有代码...... 等每个网站..
“Rivers Ridge Data”是一个站点(Sheppard是另一个站点),“0204279245”是站点号。我希望这些在循环的每次迭代期间换出。如果您需要更多信息或我正在处理的样本,请跟进。
答案 0 :(得分:0)
我建议使用包含2列的设置选项卡,站点名称和站点编号。然后你可以遍历该列表。在循环中,您可以创建数据和摘要表,然后将数字连接到Web地址。它可能看起来像这样。
Sub CollectAndReport()
Dim sWeb as string, sWeb2 as string
Dim i as integer
Dim sName as String
sWeb="www.google.com"
For i =2 to 10
sName = Sheets("Setup").Range("A"&i).Value
Worksheets.add sName
sWeb2 = sWeb & Sheets("Setup").("B"& i).Value
...这里你的其他代码
Next i
End Sub