如何在vba中用QueryTable对象采集网页表格数据?

在excel vba中内置了QueryTable对象可以存储从外部数据源导入的数据。

QueryTable对象不仅可以导入网页中的表格数据,还可以连接利用ADO技术访问的外部数据源的数据。

本文介绍用QueryTable对象采集网页表格数据的步骤:

  1. 先用QueryTables对象的Add方法创建一个链接到网页的QueryTable对象;
  2. 设置QueryTable对象的相关属性,如要采集的表格序号属性WebTables;设置刷新的频率属性RefreshPeriod等。
  3. 利用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对象刷新网页。

       

发表评论