如何使用VBA删除Module1?

pha*_*han 0 excel vba

我想在Excel的VBA编辑器中使用VBA命令删除Module1.这可能吗?

Por*_*ner 5

情况很复杂.请参阅此链接以了解有关原因的更多信息

简而言之,这就是你需要做的:

首先,您需要参考VBIDE

VBIDE VBIDE是对象库,它定义构成VBProject和Visual Basic编辑器的所有对象和值.您必须引用此库才能使用VBA Extensibility对象.要添加此引用,请打开VBA编辑器,在编辑器中打开VBProject,然后转到"工具"菜单.在那里,选择参考.在"引用"对话框中,向下滚动到"Microsoft Visual Basic for Applications Extensibility 5.3"并检查列表中的该项.您可以使用以下代码以编程方式添加引用:

ThisWorkbook.VBProject.References.AddFromGuid _
    GUID:="{0002E157-0000-0000-C000-000000000046}", _
    Major:=5, Minor:=3
Run Code Online (Sandbox Code Playgroud)

接下来,您需要授予"对Visual Basic项目的信任访问权限"

接下来,您需要启用对VBA项目的编程访问.在Excel 2003及更早版本中,转到"工具"菜单(在Excel中,而不是在VBA编辑器中),选择"宏",然后选择"安全"项.在该对话框中,单击"受信任的发布者"选项卡,然后选中"信任对Visual Basic项目的访问权限"设置.

在Excel 2007中,单击主功能区上的"开发人员"项,然后单击"代码"面板中的"宏安全性"项.在该对话框中,选择"宏设置"并选中"对VBA项目对象模型的信任访问".


现在您可以添加代码来删除模块:

从项目中删除模块

此代码将从VBProject中删除Module1.请注意,您无法删除任何Sheet模块或ThisWorkbook模块.通常,您无法删除Type为vbext_ct_Document的模块.

Sub DeleteModule()
    Dim VBProj As VBIDE.VBProject
    Dim VBComp As VBIDE.VBComponent

    Set VBProj = ActiveWorkbook.VBProject
    Set VBComp = VBProj.VBComponents("Module1")
    VBProj.VBComponents.Remove VBComp
End Sub
Run Code Online (Sandbox Code Playgroud)

  • +1,但您还应该提到还必须启用“对 VBA 项目对象模型的信任访问”。除非绝对必要,否则我绝对不鼓励让项目这样做。 (3认同)