zoukankan      html  css  js  c++  java
  • 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:AllowOutlookSecurityDialogAllowOutlookSecurityDialog.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:AllowOutlookSecurityDialogAllowOutlookSecurityDialog.exe " & "Button 允许 60", vbHide

    其中,"E:AllowOutlookSecurityDialogAllowOutlookSecurityDialog.exe "是那个exe文件的具体路径,根据你解压的路径进行调整,注意双引号左侧需要保证一个空格。

    另外,"Button 允许 60"里面的允许可以改成Allow(如果你是英文版Outlook),最后的60表示本工具从执行起的监视时间,意思是在60秒内凡是遇到弹出对话框,就自动点击,而不论你创建了多少封邮件。

    最后送一个动态图:

    增强版:

    下面是使用UI Automation技术实现的监视器,下载后双击打开其中的exe文件,该窗口会自动最小化到任务栏。

    llowOutlookSecurityDialog_UIA.zip

    然后,你可以任意创建邮件和发送邮件了。只要遇到安全对话框就自动给你处理了。而且是秒杀,速度非常快!非常实时。

    效果图:

  • 相关阅读:
    常见Oracle HINT的用法
    2011年的每一天是周几?
    TOM上关于JOIN跟+号的讨论
    关于index_ffs使用索引的一点问题.
    数据库中分组字符串相加
    国服3.3.5:死亡骑士全系DPS饰品收益评分
    WLK狂暴战怎么玩
    3.3萨满手册
    关于clob类型在函数中的处理。
    pivot_clause [Oracle SQL]
  • 原文地址:https://www.cnblogs.com/ryueifu-VBA/p/12002055.html
Copyright © 2011-2022 走看看