【问题标题】:Send email automatically using outlook from excel使用 Excel 中的 Outlook 自动发送电子邮件
【发布时间】:2016-11-20 21:29:34
【问题描述】:

我正在尝试每天下午 5 点发送一个打开的工作簿 (Excel)。这是我的代码:

我把这个放在一个模块中

Sub SendEmail()

    Dim OutApp As Object
    Dim OutMail As Object
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = "yourmail"
        .CC = ""
        .BCC = ""
        .Subject = "Report"
        .Body = "Hello!"
        .Attachments.Add ActiveWorkbook.FullName

        .Send
    End With

    Set OutMail = Nothing
    Set OutApp = Nothing
    Application.OnTime TimeValue("17:00:00"), "SendEmail"

End Sub

我把这个放在 ThisWorkbook 中

Sub Workbook_Open()

    Application.OnTime TimeValue("17:00:00"), "SendEmail"
End Sub

我的工作簿一直打开。 我无法收到电子邮件,除非我在 Excel 中点击了运行按钮。我希望它每天自动执行。

【问题讨论】:

    标签: excel vba outlook excel-2007


    【解决方案1】:

    您应该做的是添加一个新的子程序,该子程序设置从打开命令和电子邮件调用的时间表,这将导致它每天重置。

    添加这个子:

    Sub SetSchedule()
    
    Application.OnTime TimeValue("17:00:00"), "SendEmail"
    
    Application.OnTime TimeValue("23:59:00"), "SetSchedule"
    
    End Sub
    

    并从打开的 sub 中调用它:

    Sub Workbook_Open()
    
        Call SetSchedule
    
    End Sub
    

    然后您可以从电子邮件子本身中删除Application.OnTime 调用

    【讨论】:

      【解决方案2】:

      您最好的选择是一个简单的重复任务项目,通过每天 17:00 使用提醒来设置它

      示例: 创建您的自定义任务项以在 1700 重复发生

      将以下代码添加到 ThisOutlookSession

      Option Explicit
      Private Sub Application_Reminder(ByVal item As Object)
      '   Now call your VBA Code
      
      End Sub
      

      一旦提醒触发,您的电子邮件将自动发送。

      【讨论】:

        猜你喜欢
        • 2018-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多