使用 VBA 自动执行电源查询,查找正确的表



我正在尝试自动从网页上的表中提取数据。网页上的表数因客户而异。通常我要找的表是10号表,但有时不是。我以这种方式将查询添加到工作簿中。

ThisWorkbook.Queries.Add _
Name:="Table1", _
Formula:= _
    "let" & _
        "Source = Web.Page(Web.Contents(" & myURL & "))," & _
        "Data1 = Source{10}[Data]," & _
    "in" & _
        "Data1"

在将查询结果加载到工作表之前,有没有办法测试我是否有正确的表?即检查是否存在特定列?

我已经成功地使用了Lines.FromBinary。它可以将 HTML 文档作为表中的行返回,其中包含单个列。 下面是一个帮助您入门的示例。

= Table.FromColumns({Lines.FromBinary(Web.Contents( myURL ))})

此时我添加一个索引列。

从那里,我将按 Reference 生成一个查询,并筛选以查找唯一标识表开头的行。

然后,我将按引用生成另一个查询 - 这次查找上面确定的索引后面的表数据。 用于提取,拆分等的PQ函数通常可以很容易地将一行HTML切成碎片。

它比默认的 Web.Page 方法要麻烦得多,但更灵活。

最新更新