在excel vba中内置了QueryTable对象可以存储从外部数据源导入的数据。
QueryTable对象不仅可以导入网页中的表格数据,还可以连接利用ADO技术访问的外部数据源的数据。
本文介绍用QueryTable对象采集网页表格数据的步骤:
- 先用QueryTables对象的Add方法创建一个链接到网页的QueryTable对象;
- 设置QueryTable对象的相关属性,如要采集的表格序号属性WebTables;设置刷新的频率属性RefreshPeriod等。
- 利用QueryTable对象的Refresh方法刷新数据,开始采集。
代码如下:
Sub QQ1722187970()
Dim oQB As QueryTable
Dim oWK As Worksheet
Set oWK = Excel.ActiveSheet
sUrl = "URL;http://www.mca.gov.cn/article/sj/tjbz/a/2018/201803131439.html"
With oWK
'如果没有查询表,则新建一个
If .QueryTables.Count = 0 Then
Set oQB = oWK.QueryTables.Add(sUrl, oWK.Range("a1"))
Else
'如果有,则把第一个查询表改为网页查询
Set oQB = oWK.QueryTables(1)
With oQB
.Connection = "URL;http://www.mca.gov.cn/article/sj/tjbz/a/2018/201803131439.html"
End With
End If
End With
With oQB
'指定只导入指定的表格
.WebSelectionType = xlSpecifiedTables
'要导入的表格序号
.WebTables = 1
'设置刷新的频率,以分钟为单位,如果设置为0,表示不定时更新
.RefreshPeriod = 0
'开始刷新
.Refresh
End With
End Sub
由于每次用QueryTables对象的Add方法都会添加一个新的连接对象,所以这里先判断是否存在QueryTable对象,不存在才添加,如果存在,直接使用第一个QueryTable对象刷新网页。


发表评论