You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过VBA建立查询连接缩减Excel文件大小问题排查

数据透视表工作簿瘦身与VBA宏报错排查

我有一个包含多个数据透视表的工作簿,这些透视表通过仅连接模式从大型数据库加载到**数据模型(Data Model)**中。尽管这种模式比加载整张表格占用内存更少,但文件大小始终无法降到100MB以下,离30MB的目标差距很大。

为解决文件体积问题,我编写了VBA宏,计划在手动删除副本中的连接后,重新将查询连接加载到数据模型并重建相同的透视表。测试代码时,查询已显示在面板中,但出现**"Expression.Error: Invalid identifier"错误(所有列名及类型均正确),同时VBA弹出运行时错误'1004':无法从Data Model获取数据,错误信息为[Expression.Error] 名称'Source'未被识别,请检查拼写**。注:此为代码开头部分,尚未执行透视表创建逻辑。

我制作了测试文档并录制相同步骤的宏,该测试代码可正常运行,能同时创建查询和数据模型连接。我怀疑错误是否与查询中的列数有关——我的数据有200多列。我计划让该代码在文件打开时自动运行,避免文件大小膨胀。

以下是可正常运行的测试代码:

Sub Testing()
'
' Testing Macro
'
'
    ActiveWorkbook.Queries.Add Name:="Test Data", Formula:= _
    "let" & Chr(13) & "" & Chr(10) & "    Source = Csv.Document(File.Contents(""C:\Users\xxx\xxx\Test Data.csv""),[Delimiter="","", Columns=3, Encoding=65001, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & "    #""Promoted Headers"" = Table.PromoteHeaders(Source, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & "    #""Changed Type"" = Table.TransformColumnTypes(#""Promoted Headers"",{{""Rank"", Int64.Type}, {" & _
    """Cat"", type text}, {""Sales"", Int64.Type}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Changed Type"""
Workbooks("Test").Connections.Add2 "Query - Test Data", _
    "Connection to the 'Test Data' query in the workbook.", _
    "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Test Data;Extended Properties=" _
    , """Test Data""", 6, True,     False
End Sub

内容的提问来源于stack exchange,提问作者strawbreshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:10:56