2017-08-01 163 views
0

我有一个启用宏的工作簿,我必须在代码运行后通过电子邮件发送给其他人。问题在于工作簿需要发送的宏。我一直在手动将工作簿的副本保存为.xlsx。我现在正在尝试自动执行此操作。Workbook.SaveAs不会保存没有VBA代码

我的代码保存如下:

Application.DisplayAlerts = False 

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

Application.DisplayAlerts = True 

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

关于如何保存没有嵌入代码的工作簿的任何想法?

编辑:我也曾尝试

FileFormat:=56 

回答

0

假设你不处理与Excel 2003或以上,你应该使用

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

FileFormat:=xlWorkbookNormal (-4143)FileFormat:=xlExcel8 (56)这两个文件存储在XLS格式(老的Excel版本)与宏。

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

0

您可以保存它的一个副本。从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