在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
然后,你可以任意創建郵件和發送郵件了。只要遇到安全對話框就自動給你處理了。而且是秒殺,速度非常快!非常實時。
效果圖: