我有一个支持宏的工作簿,我必须在代码运行后通过电子邮件发送给其他人。问题在于工作簿要发送的宏很大。我一直在手动将工作簿的副本保存为.xlsx
。我现在正试图自动执行此操作。
我要保存的代码如下:
Application.DisplayAlerts = False
ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:="Workbook_No_Macros"
FileFormat=xlWorkbookNormal
Application.DisplayAlerts = True
问题是当我去查看那个本应没有VBA代码仍然太大的那个因为代码正在与工作簿一起保存,即使它正在保存一个非宏启用的工作簿。这也会导致Excel将文件视为已损坏,并且不希望在兼容模式之外打开它。
有关如何在没有嵌入代码的情况下保存工作簿的任何想法?
编辑:我也试过
FileFormat:=56
答案 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
),如果其中一个工作表包含不存在的数据。