将 Power Query .odc 文件导入其他工作簿
Posted
技术标签:
【中文标题】将 Power Query .odc 文件导入其他工作簿【英文标题】:Import PowerQuery .odc file to other workbooks 【发布时间】:2022-01-24 03:10:28 【问题描述】:我想将 .odc 文件 (Power Query) 导入 excel 文件以创建报告。
我在excel上用Record Macro记录了这个过程。 我得到了下面的代码,但是当我运行它时,出现错误:
应用程序定义或对象定义的错误
下面的代码被高亮显示。
.Refresh BackgroundQuery:=False
Sub ImportDataConnection()
'
' ImportDataConnection Macro
'
'
Windows("aExcelFile.xlsx").Activate
Application.CutCopyMode = False
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Table1;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Table1]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = _
"C:\Users\SomeUser\Documents\My Data Sources\Query - Table1.odc"
.ListObject.DisplayName = "Table_Query___Table1"
.Refresh BackgroundQuery:=False
End With
End Sub
运行上述代码后,连接显示在“查询和连接”窗格中,但该查询在该窗格中不存在。
录制时,我通过单击现有连接导入了 odc 文件,然后选择了 odc 文件。当我手动执行此操作时,查询也被导入。
导入电源查询的最佳做法是什么? 如何解决此错误?
【问题讨论】:
宏没有记录ActiveWorkbook.Queries.Add
语句吗?
没有。我没有看到声明。应该放在哪里?
显示的代码是完整的录制宏吗?
@CDP1802 我添加了也记录的额外代码,但仅此而已。当我手动执行导入过程时,查询也被导入了。请看帖子。我更新了。
【参考方案1】:
尝试先添加连接,然后添加表。
Const USERNAME = "SomeUser"
Const CON = "Query - Table1"
Dim DataSrc As String
DataSrc = "C:\Users\" & USERNAME & "\Documents\My Data Sources\" & CON & ".odc"
With ThisWorkbook
.Connections.AddFromFile DataSrc, True, False
End With
With ActiveSheet.ListObjects.Add(SourceType:=4, Source:=ActiveWorkbook. _
Connections(CON), Destination:=Range("$A$1")).TableObject
.RowNumbers = False
.PreserveFormatting = True
.RefreshStyle = 1
.AdjustColumnWidth = True
.ListObject.DisplayName = "Table1"
.Refresh
End With
【讨论】:
以上是关于将 Power Query .odc 文件导入其他工作簿的主要内容,如果未能解决你的问题,请参考以下文章
powerquery追加查询如何将导入数据表头不显示null