如何使用VBA更改电源查询的来源?

时间:2016-03-18 12:32:57

标签: excel vba powerquery

所以在Excel 2016中,他们有一个名为Power Query的简洁工具,基本上是一个美化的excel表。每个表都有用于过滤,删除列等的步骤......第一步是源步骤,基本上分配连接字符串以检索数据,通常此源只是指向创建它的查询。

无论如何,我试图在VBA中动态更改这些电源查询的来源,任何人都有任何想法?

我尝试使用整个连接氛围,但没有成功。

3 个答案:

答案 0 :(得分:3)

您可以通过ActiveWorkbook.Item访问查询。然后,您可以修改“公式”属性。您可以找到有关这些对象的文档here

请注意,Power Query对象模型仅在Excel 2016中添加到VBA,在以前的版本中无法访问。

答案 1 :(得分:0)

很多年后,但是我为那些像我一样仍然使用Excel 2013的人添加了一个不同的解决方案。正如@Alejandro在其答复中所说,Power Query仅添加到Excel 2016中的对象模型中。 / p>

如果使用的是较旧版本的Excel,则可以使用基于单元格的解决方案,类似于此处讨论的相对源路径: https://techcommunity.microsoft.com/t5/excel/power-query-source-from-relative-paths/m-p/206150

基本上在工作簿中的某个位置有一个单元格,其中包含查询的源。使用标准Excel名称对该单元命名。在下面的示例中,我将单元格命名为SourceFileName,并且尝试将Excel文件加载到PowerQuery。源Excel文件的全名(包括路径)在SourceFileName中。然后,您可以通过Power Query访问该单元格的内容:

<previous M code>
sourceFileName= Excel.CurrentWorkbook(){[Name="SourceFileName"]}[Content]{0}[Column1],
Source = Excel.Workbook(File.Contents(sourceFileName ), null, true),
<rest of M code>

答案 2 :(得分:0)

可以通过 Workbook 对象中的查询集合来访问查询。源的相关属性是 Formula

示例代码:

ActiveWorkbook.Queries.Item("MyQuery").Formula = "[Insert actual M formula here]"