使用Excel中的outlook自动发送电子邮件

时间:2016-07-18 10:05:13

标签: vba excel-vba outlook excel-2007 outlook-vba

我正在尝试每天下午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中的运行按钮,我无法收到电子邮件。我希望它每天都自动完成。

2 个答案:

答案 0 :(得分:0)

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

添加此子:

Sub SetSchedule()

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

Application.OnTime TimeValue("23:59:00"), "SetSchedule"

End Sub

然后从开放子语言中调用它:

Sub Workbook_Open()

    Call SetSchedule

End Sub

然后,您可以从电子邮件子目录

中删除Application.OnTime来电

答案 1 :(得分:0)

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

实施例: 创建自定义任务项以在1700重现

将以下代码添加到ThisOutlookSession

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

End Sub

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