在尝试获取用户信息时,如何绕过Outlook警报?
我正在尝试从Outlook中获取用户名,用户电子邮件,用户部门和用户位置,以填充Excel用户表单。
该代码工作没有问题。 我遇到的问题是这样的:我从Excel的popup式窗口中看到“程序正在尝试访问存储在Outlook中的电子邮件地址信息,如果这是意外的,请单击”拒绝“并确认您的防病毒软件是最新的。
我发现一些代码是应该抑制这个popup窗口,但它似乎没有工作。 下面是使用该过程调用的过程。 我已经多次调用了“Turn_Auto_Yes_On”过程来查看它是否适用于任何调用。 Turn_Auto_yes_On成功执行,但似乎没有效果,因为我仍然执行后得到Outlook消息。
我被困在这里,并已去了多个网站的答案,我没有find。 任何帮助将非常感激。
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
这是应该绕过前景警报的代码
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安全性”问题使用Outlook Redemption 。
Outlook Redemption可以解决由Outlook安全补丁程序施加的限制,并提供许多对象和函数来处理不通过Outlook对象模型公开的属性和function。
借助Outlook Redemption,您可以使您的代码不受安全修补程序的影响。
我特别的用例是自动发送来自python的outlook电子邮件。 我有与用户popup相同的问题,这个伎俩。