在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
相关产品推荐
相关产品推荐

