如何制作一个excel表,在他生日那天自动向某人发送电子邮件?

时间:2015-03-17 21:44:36

标签: excel email excel-vba outlook excel-formula vba

我需要写一个公式来识别某人的生日,并触发www.zapier.com。]

我有一个生日识别公式,可以创建“发送电子邮件”超链接,但我需要它以非交互方式自动发送(并延迟到上午10点)。我也在VBA中做了一些事情,但我只设法编写将该消息发送给1个人的代码。

这是工作生日识别公式。客户名称在C8列:C100,电子邮件在D8:D100,DOB在E8:E100,“发送邮件”超链接在F:100。

=IF(TEXT(E13;"d.m")=TEXT(TODAY();"d.m");HYPERLINK("mailto:"&D13&"? subject="&$D$2&"&body="&SUBSTITUTE(SUBSTITUTE($E$3;"$";C13);"@";$D$4);"pošalji čestitku");"")

“pošaljičestitku”=发送邮件(克罗地亚语)

VBA代码:

Private Sub CommandButton1_Click()

POŠALJIROĐENDANSKEČESTITKE

End Sub

Public Function POŠALJIROĐENDANSKEČESTITKE()

Dim olApp As Outlook.Application

Set olApp = CreateObject("Outlook.Application")

 Dim olMail As Outlook.MailItem

 Set olMail = olApp.CreateItem(olMailItem)

 olMail.To = Cells.Range("D8:D1000")

 olMail.subject = "Sretan rođendan"

 olMail.Body = "Poštovani," & vbCrLf & vbCrLf & "Želimo Vam sretan rođendan"

& vbCrLf & vbCrLf & "Sve najbolje," & vbCrLf & vbCrLf & "svinaweb"

 olMail.Send

End Function

当我点击命令按钮时,此代码只是将消息发送到一封电子邮件,但正如我所说,我希望将其发送给今天有生日的每个人,并延迟将电子邮件发送到上午10点而不是午夜。

我正在使用Excel 2013。

1 个答案:

答案 0 :(得分:0)

MailItem类的Recipients属性返回一个Recipients集合,该集合表示Outlook项目的所有收件人。

Recipients类提供Add方法来创建新的Recipient对象并将其添加到Recipients对象。 Type属性返回或设置收件人的类型。它可以是以下OlMailRecipientType常量之一:olBCC,olCC,olOriginator或olTo。

因此,您可以将单个电子邮件发送给所有人。您只需将它们添加到Recipients集合中即可。或者,如果您需要拥有单独的邮件正文,则可以创建单独的电子邮件。

MailItem类的DeferredDeliveryTime属性允许设置一个日期,指示邮件传递的日期和时间。