我想從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打開安全提示時調用例程,更好的解決方案是使用例如vbMAPI或Redemption,這正好解決了這個問題 –
我猜這是在宏安全設置中,請查看[MS Docs](https://support.office.com/zh-cn/)中的「查看Trust Center中的安全設置」部分。 -us /條/ I-得到的警告 - 約-A-程序訪問的電子郵件地址信息 - 或 - 發送的電子郵件上,我-代表-df007135-c632-4ae4-8577-dd4ba26750a2 ) –
@CarlColjin是的,它非常快樂,我知道它,我會研究vbMAPI或redemption,謝謝你的建議。 –