我有一个excel模板,它使用宏来保存文件,以便用户保持标准化的文件名格式.我使用Excel 2003创建了代码.代码如下:
Sub SaveBook()
Dim sFile As String
sFile = "ConsolidatedDemand" & "_" & Format(Now(), "yyyy.mm.dd") & ".xls"
ActiveWorkbook.SaveAs Filename:= "\\file location\" & sFile
End Sub
Run Code Online (Sandbox Code Playgroud)
我有一个用户使用Excel 2007.当他们尝试运行宏时,他们收到一个错误:"以下功能无法保存在无宏工作簿中:VB项目.要保存具有这些功能的文件,请单击否,然后在文件类型列表中选择启用宏的文件类型.要继续保存为无宏工作簿,请单击"是"
我尝试在第二行代码中将文件扩展名转换为".xlsm",但是产生了相同的错误消息.关于如何修改此代码以使其适用于Excel 2007用户的任何其他想法?
(摘自:http://blogs.office.com/b/microsoft-excel/archive/2009/07/07/use-the-vba-saveas-method-in-excel-2007.aspx)
在Excel 2007中,SaveAs方法要求您提供FileFormat参数和正确的文件扩展名.
例如,在Excel 2007中,如果ActiveWorkbook不是.xlsm文件,则此行代码将失败:
ActiveWorkbook.SaveAs "C:\ron.xlsm"
Run Code Online (Sandbox Code Playgroud)
但是这段代码将始终有效:
ActiveWorkbook.SaveAs "C:\ron.xlsm", fileformat:=52
Run Code Online (Sandbox Code Playgroud)
这些是Excel 2007中的主要文件格式: