Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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 2013 VBA到Outlook的多个电子邮件地址_Vba_Excel_Email_Outlook_Excel 2013 - Fatal编程技术网

Excel 2013 VBA到Outlook的多个电子邮件地址

Excel 2013 VBA到Outlook的多个电子邮件地址,vba,excel,email,outlook,excel-2013,Vba,Excel,Email,Outlook,Excel 2013,我正在用Excel 2013编写代码。我有一个客户数据表,随着时间的推移,客户数据的数量会增加或减少,这取决于我的活跃退伍军人案件量: A列-姓氏 B列-名字 C列-电子邮件地址 D列-等 我需要代码来引用C列,并将其中的所有电子邮件放在单个Outlook电子邮件的密件抄送中。我创建的代码(通过我的研究)只允许将硬编码的电子邮件地址发送到Outlook的“收件人”、“抄送”或“密件抄送”字段——在多个条目之间使用分号。我的问题是,电子邮件地址的数量取决于电子表格中记录的数量,因此硬编码是没有用的

我正在用Excel 2013编写代码。我有一个客户数据表,随着时间的推移,客户数据的数量会增加或减少,这取决于我的活跃退伍军人案件量:

A列-姓氏
B列-名字
C列-电子邮件地址
D列-等

我需要代码来引用C列,并将其中的所有电子邮件放在单个Outlook电子邮件的密件抄送中。我创建的代码(通过我的研究)只允许将硬编码的电子邮件地址发送到Outlook的“收件人”、“抄送”或“密件抄送”字段——在多个条目之间使用分号。我的问题是,电子邮件地址的数量取决于电子表格中记录的数量,因此硬编码是没有用的。下面的代码具有我所需要的所有功能,但电子邮件问题除外

Sub SendBasicEmail()
Dim olApp As Outlook.Application
Dim olEmail As Outlook.MailItem
Set olApp = New Outlook.Application
Set olEmail = olApp.CreateItem(olMailItem)
With olEmail
    .BodyFormat = olFormatHTML
    .Display
    .HTMLBody = "<h3>Testing</h3><br>" & "<br>" & .HTMLBody
    .Attachments.Add "xxx/test.pdf"
    .To = ""
    .BCC = ""
    .Subject = "Test Message"
    '.Send
End With 
End Sub
子发送基本邮件()
Dim olApp作为Outlook.Application
以Outlook.MailItem的形式发送邮件
Set olApp=newoutlook.Application
设置olEmail=olApp.CreateItem(olMailItem)
用电子邮件
.BodyFormat=olFormatHTML
.展示
.HTMLBody=“测试
”&“
”&.HTMLBody .Attachments.Add“xxx/test.pdf” .To=“” .BCC=“” .Subject=“测试消息” ’发送 以 端接头
代码将在工作表1的内容中循环(只需更改为工作表(“whateveryoucalledyoursheet”)),并保留单元格行

Sub SendBasicEmail()
dim ws as worksheet, y
Dim olApp As Outlook.Application
Dim olEmail As Outlook.MailItem
set ws = sheets(1)
for each y in ws.range("A1:A" & ws.range("A1").SpecialCells(xlCellTypeLastCell).row)

Set olApp = New Outlook.Application
Set olEmail = olApp.CreateItem(olMailItem)
With olEmail
    .BodyFormat = olFormatHTML
    .Display
    .HTMLBody = "<h3>Testing</h3><br>" & "<br>" & .HTMLBody
    .Attachments.Add "xxx/test.pdf"
    .To = ws.range("A" & y.row)
    .BCC = ws.range("C" & y.row)
    .Subject = "Test Message"
    ' use display to check the email out before you send
    .display
    '.Send
End With
next y

end sub
子发送基本邮件()
将ws设置为工作表,y
Dim olApp作为Outlook.Application
以Outlook.MailItem的形式发送邮件
设置ws=图纸(1)
对于ws.range(“A1:A”和ws.range(“A1”).SpecialCells(xlCellTypeLastCell).row)中的每个y
Set olApp=newoutlook.Application
设置olEmail=olApp.CreateItem(olMailItem)
用电子邮件
.BodyFormat=olFormatHTML
.展示
.HTMLBody=“测试
”&“
”&.HTMLBody .Attachments.Add“xxx/test.pdf” .To=ws.range(“A”和y.row) .BCC=ws.range(“C”和y.row) .Subject=“测试消息” '在发送前使用display签出电子邮件 .展示 ’发送 以 下一个y 端接头
我只需在该列上循环,并生成一个字符串,其中包含由分号分隔的地址

Sub SendBasicEmail()
Dim olApp As Outlook.Application
Dim olEmail As Outlook.MailItem
Set olApp = New Outlook.Application
Set olEmail = olApp.CreateItem(olMailItem)

'set your range as needed, i chose one named "recipients"
bc_r = ""
For each cl in range("recipients")
    bc_r = bc_r & "; " & cl.Value
Next cl

With olEmail
    .BodyFormat = olFormatHTML
    .Display
    .HTMLBody = "<h3>Testing</h3><br>" & "<br>" & .HTMLBody
    .Attachments.Add "xxx/test.pdf"
    .To = ""
    .BCC = bc_r
    .Subject = "Test Message"
    '.Send
End With
End Sub
子发送基本邮件()
Dim olApp作为Outlook.Application
以Outlook.MailItem的形式发送邮件
Set olApp=newoutlook.Application
设置olEmail=olApp.CreateItem(olMailItem)
'根据需要设置范围,我选择了一个名为“收件人”
bc_r=“”
对于范围内的每个cl(“收件人”)
bc_r=bc_r&“;”和cl.值
下一个cl
用电子邮件
.BodyFormat=olFormatHTML
.展示
.HTMLBody=“测试
”&“
”&.HTMLBody .Attachments.Add“xxx/test.pdf” .To=“” .BCC=bc\r .Subject=“测试消息” ’发送 以 端接头
经过测试,完全符合我的需要。非常感谢你的帮助。希望我能投票支持你,但这是我第一篇关于堆栈溢出的帖子。