Run Time Error 1004:Workbook_Open执行PowerQuery触发的异常排查
问题解决方法
核心原因
Workbook_Open自动执行时,代码依赖ActiveWorkbook的上下文会出现混乱——此时激活的工作簿大概率是包含该事件的工作簿,而非你打开的目标CSV文件,导致PowerQuery在错误的工作簿中创建查询,触发"表格的工作表数据需与表格位于同一工作表"错误。
具体修正步骤
- 放弃使用
ActiveWorkbook,改用明确的工作簿对象变量绑定打开的CSV文件,所有后续操作都通过该变量执行,彻底避免上下文混乱。
示例修正代码片段:
Private Sub Workbook_Open() Dim csvWB As Workbook Dim targetPath As String targetPath = "你的CSV文件实际路径" ' 打开CSV并绑定到对象变量 Set csvWB = Workbooks.Open(targetPath) ' 用csvWB替代ActiveWorkbook执行PowerQuery查询创建 csvWB.Queries.Add Name:="Liste_All_Masques", Formula:= _ "你的PowerQuery完整公式内容" ' 后续的另存为、关闭操作同样使用csvWB变量 csvWB.SaveAs Filename:="目标XLSX保存路径", FileFormat:=xlOpenXMLWorkbook csvWB.Close SaveChanges:=False End Sub
- 额外检查PowerQuery公式中的数据源引用,确保其指向csvWB内的工作表(比如公式里的
Source = Excel.CurrentWorkbook(){[Name="目标表名"]}[Content],要保证"目标表名"确实存在于打开的CSV工作簿中)。
内容的提问来源于stack exchange,提问作者Florent
相关产品推荐
相关产品推荐

