是否可以在计算机处于睡眠状态时 运行 Microsoft Outlook VBA?

Is it possible to run Microsoft Outlook VBA when computer is in sleep?

我目前正在使用 Outlook VBA 脚本将自动报告电子邮件中的 PDF 附件保存到公司共享驱动器上。问题是我很快就要休假 2 周,所以我想知道我是否可以在我的电脑处于睡眠模式时制作 VBA 运行?

根据我的研究,我了解到如果我的 PC 关闭,VBA 根本无法 运行,但是如果我让 Outlook 保持打开状态并让我的 PC 进入睡眠状态怎么办?

下面是我的简单VBA脚本供您参考。 (过滤规则是运行)

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)

Dim objAtt As Outlook.Attachment

Dim saveFolder_1 As String
    saveFolder_1 = "my path 1"

Dim saveFolder_2 As String
    saveFolder_2 = "my path 2"

Dim dateFormat
    dateFormat = Format(itm.ReceivedTime, "yyyymmdd")


For Each objAtt In itm.Attachments
    objAtt.SaveAsFile saveFolder_1 & "\" & "file name" & dateFormat & ".pdf"
    objAtt.SaveAsFile saveFolder_2 & "\" & "file name" & dateFormat & ".pdf"
    Set objAtt = Nothing
Next
End Sub

不,当您的计算机处于休眠状态时,Outlook 不会 运行。通常,无论 Outlook 是否连接到它,您都可以拥有由 Exchange 服务器执行的服务器端规则,但它将无法 运行 VB 脚本或保存附件。您能做的最好的事情就是将邮件移动到其他文件夹或将 forward/delegate 邮件移动到其他邮箱。

另一种选择(我就是这样做的)是 运行 驻留在永远在线的服务器上的虚拟机上的 outlook。这样一来,无论本地计算机的状态如何,Outlook 将始终处于 运行ning 状态并能够在服务器上执行代码。

如果您不能 运行 服务器上的代码,您可以使用 Windows 任务计划程序将工作站从睡眠中唤醒,运行 宏,然后返回睡觉。相当好的说明位于 this page.