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

在Word VBA中创建启用宏的Excel文件报错求助

Word VBA创建启用宏的Excel工作簿(.xlsm)解决1004错误

问题场景

现有Word VBA代码可正常创建.xlsx格式的Excel工作簿,但将文件后缀改为.xlsm以创建启用宏的文件时,触发RTE 1004错误(提示“文件名类型错误”),疑问是否需要修改CreateObject的参数。

原代码如下:

Const ExcelSourcePath = "C:\Users\Holge\_Universet i billeder\_ExcelDocs\"
Dim xlAppl As New Excel.Application
Dim xlBook As New Excel.Workbook

Private Sub TestCreateExcelFile()
    Set xlAppl = CreateObject("Excel.Application")
    Set xlBook = xlAppl.Workbooks.Add
    Application.DisplayAlerts = False
    xlBook.SaveAs FileName:=ExcelSourcePath & "TestFile.xlsx"
    Application.DisplayAlerts = True
    xlBook.Close False
    Set xlBook = Nothing
    xlAppl.Quit
    Set xlAppl = Nothing
End Sub

错误原因

不需要修改CreateObject("Excel.Application")的参数,错误根源在于:保存.xlsm格式文件时,必须明确指定对应的文件格式枚举值,仅修改后缀名无法让Excel识别格式类型。

修正后的代码

Const ExcelSourcePath = "C:\Users\Holge\_Universet i billeder\_ExcelDocs\"
Dim xlAppl As Object
Dim xlBook As Object

Private Sub TestCreateExcelFile()
    ' 创建Excel应用实例
    Set xlAppl = CreateObject("Excel.Application")
    ' 新建工作簿
    Set xlBook = xlAppl.Workbooks.Add
    
    ' 关闭Excel的保存提示(注意操作的是Excel应用,而非Word)
    xlAppl.DisplayAlerts = False
    ' 保存为启用宏的工作簿,必须指定FileFormat参数
    xlBook.SaveAs FileName:=ExcelSourcePath & "TestFile.xlsm", _
                  FileFormat:=xlOpenXMLWorkbookMacroEnabled
    xlAppl.DisplayAlerts = True
    
    ' 关闭工作簿并释放资源
    xlBook.Close False
    Set xlBook = Nothing
    xlAppl.Quit
    Set xlAppl = Nothing
End Sub

关键说明

  • CreateObject("Excel.Application")无需修改,该参数用于创建Excel应用实例,和文件格式无关
  • 保存.xlsm时必须指定FileFormat:=xlOpenXMLWorkbookMacroEnabled(对应数值52),这是启用宏的Open XML工作簿标准格式
  • 原代码中Application.DisplayAlerts操作的是Word应用的提示,应改为xlAppl.DisplayAlerts来控制Excel的提示,避免影响Word本身的设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:15:28