Email 如何使用Excel和VBA将电子邮件正文中的特殊字符替换为每行中的值以发送给多个收件人
我正在创建一个Excel用户表单,它可以为多达500个收件人创建一封单独的电子邮件 工作表上有4列:姓名(A列)、电子邮件(B列)、值1(C列) 代码使用For和Next循环样式,其中r被声明为整数(r=2到500),并使用MailItem对象、.To=Cells(r,2) 我遇到的问题是试图合并一个范围(C列)中的值,该范围替换用于创建电子邮件正文的文本框中的特殊字符 因此,如果我键入,Email 如何使用Excel和VBA将电子邮件正文中的特殊字符替换为每行中的值以发送给多个收件人,email,vba,replace,Email,Vba,Replace,我正在创建一个Excel用户表单,它可以为多达500个收件人创建一封单独的电子邮件 工作表上有4列:姓名(A列)、电子邮件(B列)、值1(C列) 代码使用For和Next循环样式,其中r被声明为整数(r=2到500),并使用MailItem对象、.To=Cells(r,2) 我遇到的问题是试图合并一个范围(C列)中的值,该范围替换用于创建电子邮件正文的文本框中的特殊字符 因此,如果我键入,Hello,昨天有^&^个交易失败。并点击用于“发送”的命令按钮,它将向列B中列出的每个电子邮件地址发送一封
Hello,昨天有^&^个交易失败。
并点击用于“发送”的命令按钮,它将向列B中列出的每个电子邮件地址发送一封电子邮件,并用列C中的值替换每个单独的电子邮件地址(每行)
下面以VBA代码为例。当然,为了使这个查询尽可能简短,我没有提到很多其他声明的变量
Dim Signature As String, EmailSensitivity As String, EmailImportance As String
Dim Greeting As String, Punctuation As String, Security As String
Sub SendButton1_Click()
If SubjectText = vbNullString Then
If EmailBody1 = vbNullString Then
MsgBox "Form Incomplete:" & vbCrLf & vbCrLf & _
"No Subject or Email Text.", vbOKOnly
Exit Sub
End If
End If
If SubjectText = vbNullString Then
MsgBox "Form Incomplete:" & vbCrLf & vbCrLf & _
"Please enter Subject.", vbOKOnly
Exit Sub
End If
If EmailBody1 = vbNullString Then
MsgBox "Form Incomplete:" & vbCrLf & vbCrLf & _
"Please enter Email Text."
Exit Sub
End If
If SignatureText1 = vbNullString Then
Continue = MsgBox("Your email contains no signature." & vbCrLf & vbCrLf & _
"Are you sure you wish to proceed?", vbYesNo)
If Continue = vbNo Then
Exit Sub
End If
End If
Dim OutApp As Object, OutMail As Object
Dim r As Integer
Application.ScreenUpdating = False
For r = 2 To 501
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
On Error Resume Next
With OutMail
.Subject = Security & SubjectText.Value
.Body = EmailBody1.Value & vbCrLf & vbCrLf & _
SignatureText1.Value
.To = Cells(r, 2)
.Attachements.Add AttachmentText1.Value
.Importance = EmailImportance
.Sensitivity = EmailSensitivity
.Send
End With
Next r
Set OutApp = Nothing
Application.ScreenUpdating = True
Sheet1.Range("A2:B501").Clear
Continue = MsgBox("You have successfully generated a mass email!" & vbCrLf & vbCrLf & _
"Would you like to generate another email?", vbYesNo)
If Continue = vbNo Then
Application.Quit
End If
End Sub
我还是一个业余爱好者,所以我正在清理大量不必要的代码,但是这个查询主要是用每行中列出的值替换特殊字符
这是我第一次在论坛上发布查询,如果我没有按照正确的程序进行操作,请告诉我。非常感谢您的帮助。使用以下功能,可能就这么简单:
...
With OutMail
.Subject = Security & SubjectText.Value
.Body = Replace(EmailBody1.Value,"^&^",Cells(r, 3)) & _
vbCrLf & vbCrLf & SignatureText1.Value
...
与此无关,但import:On Error Resume Next
表示发送(以及此后的任何操作)将以静默方式失败。这将使未来的调试更加困难、令人沮丧和昂贵。您至少应该记录发生错误的相关详细信息,以及工作表中哪一行的详细信息。在程序可能意外失败的部分之后,请确保在错误转到0时使用或类似工具重新启用错误检查