我已经设置了一个宏来创建和保存原始工作簿的副本。但是我不希望原始的某些宏在副本上运行。有没有办法让我可以获得宏,创建并保存原件的副本,以解除'撤防?某些宏?
提前感谢您的帮助!
答案 0 :(得分:1)
您可以使用VBIDE object library
免责声明:仔细阅读"简介" 及其 注意 条款
然后将项目所需的引用添加到 Microsoft Visual Basic For Applications Extensibility 5.3。和代码如下:
Sub DeleteModule(wb As Workbook, moduleName As String)
With wb.VBProject
.VBComponents.Remove .VBComponents(moduleName)
End With
End Sub
由您的主要子系统调用,如下所示
Sub main()
' ... code to get to the original workbook saved copy
ThisWorkbook.SaveAs "C:\Users\...\FileTest.xlsm"
DeleteModule ActiveWorkbook, "ModuleNameToDelete" '<--| this will erase the wanted module from the active workbook (i.e. the just "savedas" workbook)
'... more code
End Sub
答案 1 :(得分:0)
这取决于工作簿设计。首先,宏是否与按钮相关联?如果是,则可以从按钮中删除它们,或者可以删除按钮。如果没有,就没有直接的解除武装的方法。放你的宏。然而,我们想到的一个技巧是根据工作簿的名称使您想要禁用的宏(假设保存的工作簿使用不同的名称)。然后,可以使用if语句将宏设置为仅在原始工作簿名称下运行。