最大 500 人の受信者に個別の電子メールを作成する Excel UserForm を作成しています。
ワークシートには、名前 (列 A)、電子メール (列 B)、値 1 (列 C) の 4 つの列があります。
このコードでは、For および Next ループ スタイルを使用します。ここで、r は整数 (r = 2 To 500) として宣言され、MailItem オブジェクト .To =Cells(r,2) とともに宣言されます。
私が抱えている問題は、電子メールの本文を作成するために使用されるテキスト ボックスに配置された特殊文字を置き換える範囲 (列 C) から値を取り込もうとしていることです。
したがってHello, There were ^&^ transactions that failed yesterday.
、入力して「送信」に使用するコマンド ボタンを押すと、列 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
私はまだ素人なので、不要なコードの多くを掃除する作業を行っていますが、この問い合わせは主に、特殊文字を各行に記載されている値に置き換えることです。
実際にフォーラムに問い合わせを投稿するのはこれが初めてなので、正しい手順に従っていない場合はお知らせください。よろしくお願いします。