Workbook.Save如果没有VBA代码将无法保存

时间:2017-08-01 13:31:00

标签: excel vba excel-vba

我有一个支持宏的工作簿,我必须在代码运行后通过电子邮件发送给其他人。问题在于工作簿要发送的宏很大。我一直在手动将工作簿的副本保存为.xlsx。我现在正试图自动执行此操作。

我要保存的代码如下:

Application.DisplayAlerts = False

ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:="Workbook_No_Macros" 
FileFormat=xlWorkbookNormal

Application.DisplayAlerts = True

问题是当我去查看那个本应没有VBA代码仍然太大的那个因为代码正在与工作簿一起保存,即使它正在保存一个非宏启用的工作簿。这也会导致Excel将文件视为已损坏,并且不希望在兼容模式之外打开它。

有关如何在没有嵌入代码的情况下保存工作簿的任何想法?

编辑:我也试过

FileFormat:=56

2 个答案:

答案 0 :(得分:1)

您可以保存它的副本。代码取自here

Sub M_snb()
    Application.DisplayAlerts = False

    ThisWorkbook.Sheets.Copy
    With Workbooks(Workbooks.Count)
        .SaveAs ThisWorkbook.Path & "\copy_001.xlsx", 51
        .Close
    End With

    Application.DisplayAlerts = True
End Sub

答案 1 :(得分:0)

假设您没有使用Excel 2003或更早版本,则应使用

ActiveWorkbook.SaveAs Filename:="Workbook_No_Macros", FileFormat:=xlOpenXMLWorkbook    ' 51

FileFormat:=xlWorkbookNormal (-4143)FileFormat:=xlExcel8 (56)都将文件存储为带有宏的xls格式(旧Excel版本)。

但是,我怀疑代码本身会使文件变得如此之大。也许检查文件中所有工作表的内容(例如,检查UsedRange),如果其中一个工作表包含不存在的数据。