I’m trying to create a Macro in Excel 2007 that will delete itself when it finishes running and close Excel. The reason I want to do this is that I am going to be sending the Workbook out to other people, and I don’t want them to see security warnings about the Macros. Several versions of this Workbook will be generated, so this I don’t want to manually run and remove the Macro for each one.
I’ve tried the following code. It runs without error, but does not actually delete the Macro. If I remove the line “ActiveWorkbook.Close SaveChanges:=True” the Macro is deleted, but this prompts the user to save the Workbook as Excel closes. Is there any way to do this without User interaction?
Dim ActiveComponent
Set ActiveComponent = ActiveWorkbook.VBProject.VBComponents("ModuleName")
ActiveWorkbook.VBProject.VBComponents.Remove (ActiveComponent)
ActiveWorkbook.Save
Application.Quit
ActiveWorkbook.Close SaveChanges:=True
Why not just move your macros to another workbook and have them operate on the workbook(s) you’re sending out?