使用VBA自动执行Power Query,找到正确的表

时间:2018-04-20 13:24:56

标签: excel-vba powerquery vba excel

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

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

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

1 个答案:

答案 0 :(得分:1)

我已成功使用Lines.FromBinary。它可以使用单个列将HTML doc作为行返回到表中。这是一个让你入门的例子。

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

此时我添加了一个Index列。

从那里我将通过Reference生成一个查询,并过滤以找到唯一标识表开头的行。

然后我会通过引用生成另一个查询 - 这次查找上面标识的索引之后的表数据。 Extract,Split等的PQ函数通常可以很容易地将一行HTML切换起来。

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