EXCEL VBA代码修改,现在这个只能下载网页中的2个表格,如何修改后可下载3个表格?

下面这个代码只能下载网页中的2个表格,因为原来的URL地址中就只有2个表格,我修改后的URL页面有3个表格,如何能使下载3个表格?
---------------------------------------------------------------------------------------------------------------------------------------------
Sub 加载表格()
Dim url As String, arr, num As Long, sht As Worksheet, s() As Byte
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set xh = CreateObject("msxml2.xmlhttp")

url = "http://#shtname"
For i = 4 To Sheets.Count
t = Timer
Set sht = Sheets(i)
With xh
.Open "GET", Replace(url, "shtname", sht.Name), False
.send
Do While .ReadyState <> 4
DoEvents
Loop
s = .responseBody
dmt.body.innerHTML = ByteToUTF16(s, "euc-kr")
Set tbls = dmt.all.tags("table")
sht.Cells.Clear
For tnum = 0 To 1
Set tbl = tbls(tnum)
ReDim arr(1 To tbl.Rows.Length + 1, 1 To tbl.Rows(0).Cells.Length + 1)
num = 0
For j = 0 To tbl.Rows.Length - 1
Set rws = tbl.Rows(j)
num = num + 1
For k = 0 To rws.Cells.Length - 1
arr(num, k + 1) = rws.Cells(k).innerText
Next
Next
If tnum = 0 Then
sht.Range("a2").Resize(UBound(arr), UBound(arr, 2)) = arr
Set rng2 = sht.Range("a5")
Else
rng2.Resize(UBound(arr), UBound(arr, 2)) = arr
End If
Next
End With
Debug.Print i & ":" & Timer - t
Next
Sheets("TOTAL").Activate
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

修改

 For tnum = 0 To 1

这行为

 For tnum = 0 To 2

1修改为2 ,则是3给表格。如果表格数不确定(2个、3个,或者多余3个),则修改为。

For tnum = 0 To tbls.Length

追问

您真是个大好人啊,,,跪拜啊,,,

我改成 tbls.Length 后,出现如图,,,

追答

For tnum = 0 To tbls.Length-1
不好意思搞错了。
从这个代码里来看,tbls是网页里的所有的表格的数组,Length属性返回表格的个数。由于索引是从0开始的,所以for 循环要Length -1 。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-20
这个不需要修改的,vba 编程时已经考虑进去了,for i=4 to sheets.count,所以原来的表格中并不止2个sheet,而是之前有4个以上的sheet,其他的可能它已经隐藏,或者设置成不显示,然后它手动将隐藏的sheet排序在前面,所以如果你需要修改建议发源文件过来,才知道怎么帮你修改追问

邮箱地址告诉我下,,,

追答

[email protected]

第2个回答  2019-02-19
发你的文件来我看看?追问

邮箱地址多少,,,需要改的地方就是上面我留言的那些代码,,,

追答

看我的百度名就知道了!

相似回答