如何在尝试获取用户信息时绕过Outlook警报?
问题描述:
我想从Outlook中获取用户名,用户电子邮件,用户部门和用户位置以填充Excel用户表单。如何在尝试获取用户信息时绕过Outlook警报?
该代码没有问题。我遇到的问题是这样的:我从Excel的弹出窗口中看到“程序试图访问存储在Outlook中的电子邮件地址信息,如果这是意外的,请单击拒绝并确认您的防病毒软件是最新的。”
我发现一些代码是应该压制这个弹出窗口,但它似乎没有工作。以下是使用该过程调用的过程。我已经多次打电话给“Turn_Auto_Yes_On”程序以查看它是否适用于任何呼叫。 Turn_Auto_yes_On被成功执行,但似乎没有效果,因为我仍然在执行后得到Outlook消息。
我被困在这里,并去了多个网站的答案,我没有找到。任何帮助将非常感激。
Function fill_Outlook_Info() As Boolean
Application.DisplayAlerts = False
Call Turn_Auto_Yes_On
Set OL = CreateObject("outlook.application")
Call Turn_Auto_Yes_On
Set olAllUsers = OL.Session.AddressLists.Item("All Users").AddressEntries
Call Turn_Auto_Yes_On
s_OutlookUser = OL.Session.CurrentUser.Name
Call Turn_Auto_Yes_On
Set oentry = olAllUsers.Item(s_OutlookUser)
Call Turn_Auto_Yes_On
Set oExchUser = oentry.GetExchangeUser()
v_department = oExchUser.DEPARTMENT
v_Email = oExchUser.PrimarySmtpAddress
s_OutlookCity = oExchUser.city
End Function
,这是应该绕过Outlook的警报
Option Explicit
'these declarations are to access the RegisterWindowsMessage which is used to send "yes" to outlook
Public OL, olAllUsers, oExchUser, oentry As Object
Public v_Email As Variant 'v_department
'Public s_OutlookUser As String
Public Declare Function RegisterWindowMessage Lib "User32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As Long
Public Declare Function FindWindow Lib "User32" _
Alias "FindWindowA" (ByVal lpClassName As Any, _
ByVal lpWindowName As Any) As Long
Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Public Sub Turn_Auto_Yes_On()
Dim wnd As Long
Dim uClickYes As Long
Dim Res As Long
uClickYes = RegisterWindowMessage("CLICKYES_SUSPEND_RESUME")
wnd = FindWindow("EXCLICKYES_WND", 0&)
Res = SendMessage(wnd, uClickYes, 1, 0)
End Sub
Public Sub Turn_Off_Auto_Yes()
Dim wnd As Long
Dim uClickYes As Long
Dim Res As Long
uClickYes = RegisterWindowMessage("CLICKYES_SUSPEND_RESUME")
wnd = FindWindow("EXCLICKYES_WND", 0&)
Res = SendMessage(wnd, uClickYes, 0, 0)
End Sub
答
虽然没有具体到这个确切的使用情况下,我已经得到了各地类似的展望“手动确认”和“Outlook安全”的代码问题通过使用Outlook Redemption。
Outlook Redemption可以解决由Outlook安全补丁程序施加的限制,并提供许多对象和函数以处理未通过Outlook对象模型公开的属性和功能。
有了Outlook Redemption,你可以让你的代码不受安全补丁的影响。
我的特殊用例是自动从python发送outlook电子邮件。我对用户弹出窗口有同样的问题,这就是诀窍。
也许代码最终的作品,也许不是。但有一点是肯定的:这是一个解决方法,而且是一个解决方案。当你调用代码时,它会为你点击“确认”/“是”按钮,所以我想你必须在每次Outlook打开安全提示时调用例程,更好的解决方案是使用例如vbMAPI或Redemption,这正好解决了这个问题 –
我猜这是在宏安全设置中,请查看[MS Docs](https://support.office.com/zh-cn/)中的“查看Trust Center中的安全设置”部分。 -us /条/ I-得到的警告 - 约-A-程序访问的电子邮件地址信息 - 或 - 发送的电子邮件上,我-代表-df007135-c632-4ae4-8577-dd4ba26750a2 ) –
@CarlColjin是的,它非常快乐,我知道它,我会研究vbMAPI或redemption,谢谢你的建议。 –