首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >执行PowerQuery时录制的宏: VBA代码的意外结果

执行PowerQuery时录制的宏: VBA代码的意外结果
EN

Stack Overflow用户
提问于 2021-03-10 23:23:35
回答 1查看 20关注 0票数 0

我使用PowerQuery将4个查询仅存储为连接,然后将它们合并-附加到两个表中。这个动作被记录到一个宏中,这样我以后就可以用它来重复同样的过程。我在这里附加了由宏生成的VBA代码的相关部分。我发现了两个我没有预料到的问题,并希望找到解决方案。

首先,工作簿是通过它的实际的、完整的文件名调用的,而不是像"currentworkbook“或类似的东西(见第二行)

代码语言:javascript
运行
复制
    Workbooks( _
    "RP-DM_Survey123_Formatting_Template_March_2021_Copy4_PowerQuery.xlsm"). _
    Connections.Add2 "Query - Trees_Query", _
    "Connection to the 'Trees_Query' query in the workbook.", _
    "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Trees_Query;Extended Properties=""""" _
    , "SELECT * FROM [Trees_Query]", 2

其次,查询生成的表被存储到我在宏录制过程中命名的新工作表中(在本例中,名称为'PruningQuery'),我希望下次运行宏时会继续命名。相反,创建的表会进入新的工作表,其名称为'Sheet6‘、'Sheet7’或该工作簿中创建的最后一个工作表后面的任何数字。

代码语言:javascript
运行
复制
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
    "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=PruningQuery;Extended Properties=""""" _
    , Destination:=Range("$A$1")).QueryTable
    .CommandType = xlCmdSql
    .CommandText = Array("SELECT * FROM [PruningQuery]")
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .ListObject.DisplayName = "PruningQuery"
    .Refresh BackgroundQuery:=False
End With

在这两个问题上的任何帮助或启示都将受到极大的感谢。谢谢:)

EN

Stack Overflow用户

发布于 2021-03-16 17:37:15

感谢@BigBen。我更改了ThisWorkbook.Connections.Add2 "Query..."等的行,它工作得很好。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66567776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档