将 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 文件导入其他工作簿的主要内容,如果未能解决你的问题,请参考以下文章

刷新 CSV 导入时 Power Query 无法添加列

Excel Power Query导入MySQL数据

powerquery追加查询如何将导入数据表头不显示null

SharePoint 列表数据的 Excel Power Query 导入更改日期/时间值

利用Power Query的参数设置来快速生成自定义函数

【OFFICE 365】Power Query 多工作簿合并