如何以编程方式停止OutLook安全消息:程序正在尝试访问电子邮件地址,允许访问1分钟

时间:2018-03-06 09:54:46

标签: vba excel-vba outlook-vba excel

如何停止OutLook安全消息:

  

程序正在尝试访问电子邮件地址,允许访问1分钟

我想以编程方式停止此警报,并希望允许vba访问Outlook的收件箱,因为我没有Outlook的管理员访问权限,我无法手动解决此问题在Outlook中的信任中心设置

我的代码工作得非常好但是安全性消息需要一次又一次地检查访问权限

使用excel vba我访问Outlook邮件并从邮件下载附件

Dim sa, ba As Date
Dim spa As Date

Set ObjO = CreateObject("Outlook.Application")
Set olNs = ObjO.GetNamespace("MAPI")
Set objFolder = olNs.GetDefaultFolder(6)

Debug.Print objFolder

spa = Date

Dim j
j = 0

For Each item1 In objFolder.Items

    sa = Format(item1.ReceivedTime, "dd-MM-yyyy")

    If sa <= spa Then
         If sa > spa - 30 And item1.SenderName = "PUJARY, SHRIKANTH" Then

执行item1.senderName行时会弹出安全警告

2 个答案:

答案 0 :(得分:0)

同样的事情,没有简单的解决方案。从本质上讲,弹出窗口可以防止您尝试执行的操作:远程控制Outlook。它是为防御VBA / Macro病毒而构建的。所以不,你无法阻止这一点。

解决方案是使用扩展消息传递API(MAPI),但这不是一件容易的事。可以购买帮助程序库,例如vbMAPIOutlook Redemption

有什么区别?虽然VBA方法允许您抓取正在运行的Outlook实例,但MAPI要求您使用用户名/密码登录MAPI配置文件。这没有涉及利用Outlook的安全问题,因此是安全的。

答案 1 :(得分:0)

如果使用Redemption是一个选项,那么在几个地方修改脚本会使其在没有安全提示的情况下运行:

dim sItem
set sItem = CreateObject("Redemption.SafeMailItem")
For Each item1 In objFolder.Items
    sItem.Item = item1
    sa = Format(item1.ReceivedTime, "dd-MM-yyyy")
    If sa <= spa Then
         If sa > spa - 30 And sItem.SenderName = "PUJARY, SHRIKANTH" Then