如何使用VBA删除Module1?

时间:2013-12-03 20:41:43

标签: excel vba

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

1 个答案:

答案 0 :(得分:5)

这很复杂。请参阅此link以了解有关原因的详情。

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

首先,您需要参考VBIDE

  

VBIDE VBIDE是定义所有对象的对象库   组成VBProject和Visual Basic编辑器的值。你必须   引用此库以使用VBA Extensibility对象。加上   这个引用,打开VBA编辑器,在中打开你的VBProject   编辑器,然后转到“工具”菜单。在那里,选择参考。在里面   “引用”对话框,向下滚动到Microsoft Visual Basic for   应用程序可扩展性5.3并检查列表中的项目。您   可以使用以下代码以编程方式添加引用:

ThisWorkbook.VBProject.References.AddFromGuid _
    GUID:="{0002E157-0000-0000-C000-000000000046}", _
    Major:=5, Minor:=3

接下来,您需要授予“对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