从Excel调用Outlook中DeleteMail宏时出现错误438求助
解决Excel调用Outlook宏时的错误438
错误438的本质是对象不支持该属性或方法——你的DeleteMail是Outlook中自定义的宏过程,并非Outlook.Application对象的内置方法,直接通过OpenOL.DeleteMail调用会触发这个错误。
修正调用方式
将直接调用对象方法的代码,替换为使用Outlook的Run方法来执行自定义宏,修改后的代码如下:
Function OpenOL(Optional ProfileName) As Object Dim objOL As Object Set objOL = GetObject(, "Outlook.Application") If objOL Is Nothing Then Set objOL = CreateObject("Outlook.Application") objOL.Session.Logon ProfileName, , False, True End If ' 调用Outlook中的DeleteMail宏 objOL.Run "DeleteMail" Set OpenOL = objOL Set objOL = Nothing End Function
额外注意事项
- 若
DeleteMail宏存放在Outlook的指定模块中(比如模块名为Module1),需要明确指定模块名:objOL.Run "Module1.DeleteMail" - 如果
DeleteMail需要传入参数,直接在Run方法后添加参数即可:objOL.Run "DeleteMail", 参数1, 参数2 - 确保Outlook的宏安全设置允许运行自定义宏:打开Outlook→文件→选项→信任中心→信任中心设置→宏设置,选择"启用所有宏"(或对应签署宏的选项,若宏已数字签名)。
内容的提问来源于stack exchange,提问作者I Forte Si Daja
相关产品推荐
相关产品推荐

