Excel VBA發送Email時自動允許Outlook安全對話框


在Outlook的宏安全性設置如果選擇了“為所有宏提供通知”

 

 

並且,在【編程訪問】中選擇了“總是向我發出警告”

 

在其他VBA中創建郵件過程中,如果修改Recipients或者執行Send方法,都會彈出一個允許和拒絕的對話框。

 

 

 本帖中包含一個工具,可以自動點擊最左側的【允許】按鈕,從而保證程序的連續執行。下載地址: AllowOutlookSecurityDialog.rar

下載后解壓縮,其中的exe文件不要雙擊,放在那兒就行。

然后打開“發郵件.xlsm”,可以看到如下VBA代碼: 

Sub Test()
    Dim OutlookApp As outlook.Application
    Set OutlookApp = GetObject(, "outlook.Application")
    Dim mail As outlook.MailItem
    '預先啟動AllowOutlookSecurityDialog.exe,60表示總共監視60秒。
    Shell "E:\AllowOutlookSecurityDialog\AllowOutlookSecurityDialog.exe " & "Button 允許 60", vbHide
    For i = 1 To 2
        Set mail = OutlookApp.CreateItem(0)
        With mail
            .Recipients.Add "32669315@qq.com"
            .Subject = Time & " - Mail" & i
            .Send
        End With
    Next i
End Sub

需要注意的是這行代碼一定要寫在創建郵件之前,因為它是異步調用的,所以在阻塞之前必須啟動exe文件。

Shell "E:\AllowOutlookSecurityDialog\AllowOutlookSecurityDialog.exe " & "Button 允許 60", vbHide

其中,"E:\AllowOutlookSecurityDialog\AllowOutlookSecurityDialog.exe "是那個exe文件的具體路徑,根據你解壓的路徑進行調整,注意雙引號左側需要保證一個空格。

另外,"Button 允許 60"里面的允許可以改成Allow(如果你是英文版Outlook),最后的60表示本工具從執行起的監視時間,意思是在60秒內凡是遇到彈出對話框,就自動點擊,而不論你創建了多少封郵件。

最后送一個動態圖:

 

增強版:

下面是使用UI Automation技術實現的監視器,下載后雙擊打開其中的exe文件,該窗口會自動最小化到任務欄。

llowOutlookSecurityDialog_UIA.zip

然后,你可以任意創建郵件和發送郵件了。只要遇到安全對話框就自動給你處理了。而且是秒殺,速度非常快!非常實時。

效果圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM