保存工作簿副本时解除某些宏的问题

时间:2016-07-18 03:31:40

标签: excel vba excel-vba macros

我已经设置了一个宏来创建和保存原始工作簿的副本。但是我不希望原始的某些宏在副本上运行。有没有办法让我可以获得宏,创建并保存原件的副本,以解除'撤防?某些宏?

提前感谢您的帮助!

2 个答案:

答案 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语句将宏设置为仅在原始工作簿名称下运行。