Matlab 使用worksheet.saveas保存Excel文件时出错
我有一个Excel模板文件。基于Excel版本,我希望通过Matlab将其另存为Temp.xlsm 以下是我用来保存模板文件的代码:Matlab 使用worksheet.saveas保存Excel文件时出错,matlab,excel,vba,Matlab,Excel,Vba,我有一个Excel模板文件。基于Excel版本,我希望通过Matlab将其另存为Temp.xlsm 以下是我用来保存模板文件的代码: if(XLversion >= 12.0) Workbook = invoke(Excel.Workbooks,'Open',tempxls); tempxls1 = [pwd '\utils\temp.xlsm']; Workbook.SaveAs(tempxls1,1); tempxls = tempxls1; e
if(XLversion >= 12.0)
Workbook = invoke(Excel.Workbooks,'Open',tempxls);
tempxls1 = [pwd '\utils\temp.xlsm'];
Workbook.SaveAs(tempxls1,1);
tempxls = tempxls1;
extn = 'xlsm';
end
代码运行良好。但是,当我尝试打开该文件时,出现以下错误:
但是,当通过“另存为”菜单将temp.xls保存到temp.xlsm时,它将打开,不会出现任何错误
你知道代码中可能有什么错误,或者我是否遗漏了什么吗
谢谢请尝试以下代码并发表评论。您可以调用此
子程序
,将保存为文件
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim FileNameVal As String
If SaveAsUI Then
FileNameVal = Application.GetSaveAsFilename(, "Excel Macro-Enabled Workbook (*.xlsm), *.xlsm")
Cancel = True
If FileNameVal = "False" Then 'User pressed cancel
Exit Sub
End If
Application.EnableEvents = False
If Right(ThisWorkbook.Name, 5) <> ".xlsm" Then
ThisWorkbook.SaveAs Filename:=FileNameVal & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
Else
ThisWorkbook.SaveAs Filename:=FileNameVal, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End If
Application.EnableEvents = True
End If
End Sub
Private子工作簿\u保存前(ByVal SaveAsUI为布尔值,Cancel为布尔值)
Dim FileNameVal作为字符串
如果是SaveAsUI那么
FileNameVal=Application.GetSaveAsFilename(,“启用Excel宏的工作簿(*.xlsm),*.xlsm”)
取消=真
如果FileNameVal=“False”,则“用户按了取消”
出口接头
如果结束
Application.EnableEvents=False
如果正确(ThisWorkbook.Name,5)“.xlsm”,则
ThisWorkbook.SaveAs文件名:=FileNameVal&“.xlsm”,文件格式:=xlOpenXMLWorkbookMacroEnabled
其他的
ThisWorkbook.SaveAs文件名:=FileNameVal,文件格式:=xlOpenXMLWorkbookMacroEnabled
如果结束
Application.EnableEvents=True
如果结束
端接头
请尝试以下代码并发表评论。您可以调用此
子程序
,将保存为文件
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim FileNameVal As String
If SaveAsUI Then
FileNameVal = Application.GetSaveAsFilename(, "Excel Macro-Enabled Workbook (*.xlsm), *.xlsm")
Cancel = True
If FileNameVal = "False" Then 'User pressed cancel
Exit Sub
End If
Application.EnableEvents = False
If Right(ThisWorkbook.Name, 5) <> ".xlsm" Then
ThisWorkbook.SaveAs Filename:=FileNameVal & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
Else
ThisWorkbook.SaveAs Filename:=FileNameVal, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End If
Application.EnableEvents = True
End If
End Sub
Private子工作簿\u保存前(ByVal SaveAsUI为布尔值,Cancel为布尔值)
Dim FileNameVal作为字符串
如果是SaveAsUI那么
FileNameVal=Application.GetSaveAsFilename(,“启用Excel宏的工作簿(*.xlsm),*.xlsm”)
取消=真
如果FileNameVal=“False”,则“用户按了取消”
出口接头
如果结束
Application.EnableEvents=False
如果正确(ThisWorkbook.Name,5)“.xlsm”,则
ThisWorkbook.SaveAs文件名:=FileNameVal&“.xlsm”,文件格式:=xlOpenXMLWorkbookMacroEnabled
其他的
ThisWorkbook.SaveAs文件名:=FileNameVal,文件格式:=xlOpenXMLWorkbookMacroEnabled
如果结束
Application.EnableEvents=True
如果结束
端接头
.xlsm
s启用宏的格式。为什么不试试.xls
或.xlsx并试着打开它呢?office 2007之后,office文档的内部结构发生了变化。因此Excel依赖于
extention`来了解文件应该如何打开。。。。你的Excel版本是什么?是的,我需要一个.xlsm格式,因为我已经在模板文件中编写了许多宏。MATLAB的tag在这里做什么?:)您使用的Excel版本是什么?在saveas中使用52作为第二个参数。。。我相信这将解决问题52=xlOpenXMLWorkbookMacroEnabled=xlsm
:).xlsm
s宏启用格式。为什么不试试.xls
或.xlsx并试着打开它呢?office 2007之后,office文档的内部结构发生了变化。因此Excel依赖于
extention`来了解文件应该如何打开。。。。你的Excel版本是什么?是的,我需要一个.xlsm格式,因为我已经在模板文件中编写了许多宏。MATLAB的tag在这里做什么?:)您使用的Excel版本是什么?在saveas中使用52作为第二个参数。。。我相信这将解决这个问题(非常感谢您的时间。然而,我在Matlab中寻找一个解决方案。很高兴你能解决这个问题,更感谢Daniel:)在我发布的代码中,如果你希望有一天从VBA中查看它,52
文件格式已经指定。非常感谢你花时间。不过,我在Matlab中寻找一个解决方案。很高兴你能解决这个问题,还要感谢Daniel:)在我发布的代码中,如果你希望有一天从VBA中查看它,52
文件格式已经指定。