Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 发送带有循环和排除的群发电子邮件?_Excel_Vba_Email - Fatal编程技术网

Excel 发送带有循环和排除的群发电子邮件?

Excel 发送带有循环和排除的群发电子邮件?,excel,vba,email,Excel,Vba,Email,我正在尝试使用Do…Until循环发送电子邮件。我在VBA方面一点经验都没有,我只是想弄清楚如何从excel发送电子邮件,并让代码停在空白处或0处(因为我正在使用其他工作簿中的引用来保持更新) 我也试着把它改成一个For…Next语句,但没用 Sub SendEmail(what_address As String, subject_line As String, mail_body As String) Dim olApp As Outlook.Application Set ol

我正在尝试使用Do…Until循环发送电子邮件。我在VBA方面一点经验都没有,我只是想弄清楚如何从excel发送电子邮件,并让代码停在空白处或0处(因为我正在使用其他工作簿中的引用来保持更新)

我也试着把它改成一个For…Next语句,但没用

Sub SendEmail(what_address As String, subject_line As String, mail_body 
    As String)

Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")

Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)

olMail.To = what_address
olMail.Subject = subject_line
olMail.BodyFormat = olFormatHTML
olMail.HTMLBody = mail_body
olMail.Send


End Sub

Sub SendMassEmail()

row_number = 1

Do
DoEvents
  row_number = row_number + 1
  Dim mail_body_message As String
  Dim full_name As String
  Dim policy_number As String
  Dim address As String
  Dim city As String
  Dim day As String
  Dim web_address As String

  mail_body_message = Sheet5.Range("I2")
  full_name = Sheet5.Range("B" & row_number) & " " & Sheet5.Range("C" & 
    row_number)
  policy_number = Sheet5.Range("F" & row_number)
  address = Sheet5.Range("D" & row_number)
  city = Sheet5.Range("E" & row_number)
  day = Sheet5.Range("G" & row_number)
  web_address = Sheet5.Range("H1")
  mail_body_message = Replace(mail_body_message, "replace_name_here", 
    full_name)
  mail_body_message = Replace(mail_body_message, "policy_number_replace", 
    policy_number)
  mail_body_message = Replace(mail_body_message, "day_replace", day)
  mail_body_message = Replace(mail_body_message, "address_replace", 
    address)
  mail_body_message = Replace(mail_body_message, "city_replace", city)
  mail_body_message = Replace(mail_body_message, "web_replace", 
    web_address)
  Call SendEmail(Sheet5.Range("A" & row_number), "Insurance update", 
    mail_body_message)
Loop Until row_number = 2

MsgBox "Complete!"

End Sub
理想情况下,这将阅读所有行并发送与我的电子邮件正文相关的电子邮件。它将从我的引用公式和没有数据的空格中排除0。当我没有手动设置循环的行数时,我会不断遇到运行时错误。它会发送电子邮件,但会阻止自动打开的sub运行

Dim row_number As Integer

丢失

您收到的错误消息的确切措辞是什么,是哪行代码导致了错误?运行时错误“-2147477259(80004005)”:我们需要知道将此消息发送给谁。确保至少输入一个名称。只要代码部分有正确的单元格,宏就可以很好地实际发送电子邮件:Loop Until row_number=s part。我只是想添加一些行,告诉它停止发送,如果它没有一个有效的电子邮件或短信格式。如果它是空的或者基本上是0。VBA如何从我的参考公式中读取0?它是将其作为实际的0读取还是仅作为占位符读取?我对此非常陌生。如果我加上这一点,它会给我一个编译错误:当前范围中的重复声明