我正在尝试在 Excel 中运行这个宏,以循环方式从网站中提取数据。我需要从大约 50 个网页中提取一个表,循环用于运行从每个网站提取数据的函数
Dim startYear As Integer
Dim endYear As Integer
Dim strStartYear as String
For startYear = 1942 To 2014
' Convert the current start year number to a string, then take the last two characters and assign to strStartYear
' So 1942 becomes "42".
strStartYear = Right(CStr(startYear),2)
' Convert the string back into an (integer) number, and add 1 to create the End year.
endYear = CInt(strStartYear)+1
' Use these variables in your other commands to specify the start/end year
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.whatifsports.com/nhl-l/profile_team.asp?hfid=11&season=" & startYear & "-" & endYear _
, Destination:=Range("$A$1"))
.CommandType = 0
.Name = "profile_team.asp?hfid=11&season=" & startYear & "-" & endYear
'other stuff omitted for brevity
End With
Next startYear
我收到的错误代码是运行时错误‘5’无效的过程或参数
它突出显示的行是“.CommandType = 0”
答案1
来自 MSDN 条目QueryTable.CommandType 属性 (Excel)QueryTable.CommandType Property (Excel):
仅当查询表或数据透视表缓存的 QueryType 属性值为 xlOLEDBQuery 时,才可以设置 CommandType 属性。
你没有进行 OLEDB 查询,因此查询类型是其他内容。由于是其他内容,因此您无法设置 CommandType,因此只需将其删除即可。
答案2
我得到了相同的“运行时错误 5”。查询网页的代码最初是通过在 Excel 用户界面中创建查询时录制宏创建的。您会认为所有参数都已正确填写!我注释掉了“.CommandType = 0”,查询就可以正常工作了。