我想在Excel的VBA编辑器中使用VBA命令删除Module1。这可能吗?
答案 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