2017-08-01 56 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