删除Outlook项目中的模块

时间:2018-06-22 08:59:17

标签: vba outlook-vba vbe

我可以删除Outlook VBA模块吗?

我尝试了以下代码:

Dim vbMod As Object

Set vbMod = Application.VBE.ActiveVBProject.VBComponents
vbMod.Remove VBComponent:=vbMod.Item("Module2")

但是出现错误:

  

438错误,对象不支持此属性或方法

这可以使用Outlook VBA完成吗?是否要包含任何参考?

2 个答案:

答案 0 :(得分:1)

尝试一下。

您将需要添加对 Microsoft Visual Basic for Applications Extensibility 5.3 的引用。

Public Sub DeleteModule(ByVal ModuleName As String)
    On Error GoTo Trap

    Dim VBAEditor As VBIDE.VBE
    Dim objProject As VBIDE.VBProject
    Dim objComponent As VBIDE.VBComponent

    Set VBAEditor = Application.VBE
    Set objProject = VBAEditor.ActiveVBProject

    For Each objComponent In objProject.VBComponents
        If objComponent.Name = ModuleName Then
            objComponent.Collection.Remove objComponent
        End If
    Next

Leave:
    On Error GoTo 0
    Exit Sub

Trap:
    MsgBox Err.Description, vbCritical
    Resume Leave
End Sub

要测试:

Sub Test()
    DeleteModule "ModuleName"
End Sub

答案 1 :(得分:0)

您的答案是否定的,我们无法删除,甚至无法通过编程方式访问VBIDE;可以添加对Microsoft Visual Basic for Applications Extensibility 5.3的引用是正确的,但无济于事。

如果您在Word或Excel上尝试此操作,则输出为:

enter image description here

但是,当您在Outlook中尝试此操作时,不会显示VBE:

enter image description here

Here是一个确认。也许在较旧的Outlook版本中,安全性较低,您可以这样做,但是至少从Outlook 2002开始,这是不可能的。