如何从excel VBA发送自动电子邮件

如何从excel VBA发送自动电子邮件,excel,vba,outlook,Excel,Vba,Outlook,我有一个VBA代码,可以向用户发送电子邮件。 我希望代码每天自动运行。 这段代码写在一个按钮内 For RowNum = 7 To Sheet1.Cells(Sheet1.Rows.Count, "B").End(xlUp).Row If VBA.Format((Sheet1.Cells(RowNum, "H").Value), "DDMM") = VBA.Format((Sheet1.Range("B1").Value), "DDMM") Then

我有一个VBA代码,可以向用户发送电子邮件。 我希望代码每天自动运行。 这段代码写在一个按钮内

    For RowNum = 7 To Sheet1.Cells(Sheet1.Rows.Count, "B").End(xlUp).Row

        If VBA.Format((Sheet1.Cells(RowNum, "H").Value), "DDMM") = VBA.Format((Sheet1.Range("B1").Value), "DDMM") Then

            Set OutApp = CreateObject("Outlook.Application")
            OutApp.Session.Logon
            Set OutMail = OutApp.CreateItem(0)

            With OutMail
            .SentOnBehalfOfName = Sheet1.Range("B3").Value
            .CC = Sheet1.Range("B4").Value
            .To = Sheet1.Cells(RowNum, "I").Value
            .Subject = "Happy Birthday !"
            .Body = "Happy Birthday"

            .Display
            .Send
            End With
        End If

        Next RowNum

        Sheet1.Range("B1").Value = Format(VBA.DateValue(Sheet1.Range("b1").Value) + 1, "dd-mm")

你可以使用一个
定时器
控件使它每天运行一次,但是Excel必须始终运行,最终你会意识到Excel/VBA不是实现这一点的正确方法。我完全同意你的看法。但是根据手头的任务,需要Excel。或者,您可以将其放入
工作簿\u open
事件中,并在打开工作簿时运行它。您甚至可以将隐藏的单元格更改为当前日期,并检查以确保它每天只运行一次。但如上所述,这仍然依赖于每天有人打开工作表。VBA可能不是解决此问题的最佳方法。您可以研究将此代码传输到运行VBScript的计划任务,该任务可以完成所有工作,或者只打开工作簿并调用宏。查看这是否有帮助-