2012-08-09 34 views
2

我試圖在Excel 2007中創建一個宏,當它完成運行並關閉Excel時它將自行刪除。我想這樣做的原因是我將把工作簿發送給其他人,我不希望他們看到關於宏的安全警告。將生成該工作簿的幾個版本,所以我不想手動運行並刪除每個宏的宏。在Excel 2007中創建一個自我刪除的宏

我試過下面的代碼。它運行時沒有錯誤,但實際上並沒有刪除宏。如果我刪除了「ActiveWorkbook.Close SaveChanges:= True」這一行,宏將被刪除,但這會提示用戶在Excel關閉時保存工作簿。沒有任何方法可以在沒有用戶交互的情況下做到

Dim ActiveComponent 
Set ActiveComponent = ActiveWorkbook.VBProject.VBComponents("ModuleName") 
ActiveWorkbook.VBProject.VBComponents.Remove (ActiveComponent) 
ActiveWorkbook.Save 
Application.Quit 
ActiveWorkbook.Close SaveChanges:=True 
+3

爲什麼不把宏移動到另一個工作簿並讓它們在您發送的工作簿上進行操作? – 2012-08-09 18:27:21

+0

或者,您可以讓宏創建您正在使用的工作簿的副本,從副本中刪除代碼,保存,關閉併發送出去。 – 2012-08-09 19:14:26

+0

看到這個鏈接http://stackoverflow.com/questions/11680411/delete-own-code-in-vba/11680865#11680865 – 2012-08-10 02:22:48

回答

1

爲什麼不把宏移動到另一個工作簿並讓它們在您發送的工作簿上工作?