我可以删除Outlook VBA模块吗?
我尝试了以下代码:
Dim vbMod As Object
Set vbMod = Application.VBE.ActiveVBProject.VBComponents
vbMod.Remove VBComponent:=vbMod.Item("Module2")
但是出现错误:
438错误,对象不支持此属性或方法
这可以使用Outlook VBA完成吗?是否要包含任何参考?
答案 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上尝试此操作,则输出为:
但是,当您在Outlook中尝试此操作时,不会显示VBE:
Here是一个确认。也许在较旧的Outlook版本中,安全性较低,您可以这样做,但是至少从Outlook 2002开始,这是不可能的。