我正在使用Excel文档自动化VBA电子邮件附件脚本。数据集如下所示
File Name Email Body
Sample 1 john@ Hello!
Sample 2 mary @ Hello!
我正在尝试做什么告诉excel在“email”列下为每个人创建一封电子邮件,然后在电子邮件正文的“正文”列中写下该文本,然后查找并附加在“文件名”列下找到其姓名的文件。所以John @会收到一封带有“Hello!”主体的电子邮件。和样本1附件。
对于每个循环,这将需要三个单独的,这让我很困惑:
到目前为止,这是我的代码,但所有这些都是找到附件:
Sub Attachment()
Dim colb As Range, mycell As Range, mycell2 As Range, mycell3 As Range
Set colb = Range(Range("B2"), Range("B2").End(xlDown))
Set colc = Range(Range("C2"), Range("C2").End(xlDown))
Set cold = Range(Range("D2"), Range("C2").End(xlDown))
For Each mycell In colb
Dim path As String
path = mycell.Value
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
Set myAttachments = OutMail.Attachments
On Error Resume Next
With OutMail
.To = ""
.CC = ""
.BCC = ""
.Subject = "Test"
.Body = ""
.Display
End With
On Error GoTo 0
myAttachments.Add "C:\R\" & path
Set OutMail = Nothing
Set OutApp = Nothing
Next
End Sub
答案 0 :(得分:1)
我不是100%肯定你在说什么,因为我不认为需要3个循环。你能不能只将代码更新到这个?
With OutMail
.To = mycell.Offset(0, 1).Text
.CC = ""
.BCC = ""
.Subject = "Test"
.Body = mycell.Offset(0, 2).Text
.Display
End With
这将引用和偏离mycell以获取收件人和正文
在这种情况下,你可以将整个程序砍下来:
Sub Attachment()
Dim colb As Range, mycell As Range
Set colb = Range(Range("B2"), Range("B2").End(xlDown))
For Each mycell In colb
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
Set myAttachments = OutMail.Attachments
On Error Resume Next
With OutMail
.To = mycell.Offset(0, 1).Text
.Subject = "Test"
.Body = mycell.Offset(0, 2).Text
.Display
End With
myAttachments.Add "C:\R\" & mycell.Text
Set OutMail = Nothing
Set OutApp = Nothing
Next
End Sub