如何修改 Excel 2007 的代码以使用 SaveAs

Posted

技术标签:

【中文标题】如何修改 Excel 2007 的代码以使用 SaveAs【英文标题】:How to modify code for Excel 2007 to use SaveAs 【发布时间】:2011-05-24 14:23:32 【问题描述】:

我有一个使用宏保存文件的 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

我有一个使用 Excel 2007 的用户。当他们尝试运行宏时,他们收到一个错误: “以下功能无法保存在无宏工作簿中:VB 项目。 要保存具有这些功能的文件,请单击否,然后在文件类型列表中选择启用宏的文件类型。要继续保存为无宏工作簿,请单击“是”

我尝试在第二行代码中将文件扩展名链接到“.xlsm”,但产生了相同的错误消息。关于如何修改此代码以使其适用于 Excel 2007 用户的任何其他想法?

【问题讨论】:

blogs.office.com/b/microsoft-excel/archive/2009/07/07/… 【参考方案1】:

(取自: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"

但此代码将始终有效:

ActiveWorkbook.SaveAs "C:\ron.xlsm", fileformat:=52 

这些是 Excel 2007 中的主要文件格式:

51 = xlOpenXMLWorkbook(2007 年没有宏,.xlsx) 52 = xlOpenXMLWorkbookMacroEnabled(2007 年有或没有宏, .xlsm) 50 = xlExcel12(2007 年的 Excel 二进制工作簿,有或没有 宏,.xlsb) 56 = xlExcel8(Excel 2007 中的 97-2003 格式,.xls)

【讨论】:

【参考方案2】:

万一你不知道,你可以在宏中检查应用程序是哪个版本,这样你就可以确定它应该保存为“xls”还是“xlsm”

If Application.Version = "13.0" Then
    MsgBox "You are using Excel 2010."
ElseIf Application.Version = "12.0" Then
    MsgBox "You are using Excel 2007."
ElseIf Application.Version = "11.0" Then
    MsgBox "You are using Excel 2003."
ElseIf Application.Version = "10.0" Then
    MsgBox "You are using Excel 2002."
ElseIf Application.Version = "9.0" Then
    MsgBox "You are using Excel 2000."
ElseIf Application.Version = "8.0" Then
    MsgBox "You are using Excel 97."
ElseIf Application.Version = "7.0" Then
    MsgBox "You are using Excel 95."
Else
    MsgBox "You are using an unknown version of Excel: " & Application.Version
End If

希望这会有所帮助。

【讨论】:

以上是关于如何修改 Excel 2007 的代码以使用 SaveAs的主要内容,如果未能解决你的问题,请参考以下文章

windows7如何在右键新建菜单里添加excel2007怎么添加呀

以编程方式创建 Excel 2007 表格

如何使用 php 将文件 excel 2007 导入 phpmyadmin?

如何使用 vba 在 Excel 2007 中找到条件格式单元格的填充颜色值?

读取指定excel,修改并某个值并另存到指定路径

Excel/Access 2007 连接问题