从Excel工作表中检索多个收件人姓名

这是代码:

它适用于一个收件人。

Sub Sendmail() Dim olItem As outlook.MailItem Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSht As Excel.Worksheet Dim sPath As String Dim iRow As Long sPath = "***" ' // Excel Set xlApp = CreateObject("Excel.Application") ' // Workbook Set xlBook = xlApp.Workbooks.Open(sPath) ' // Sheet Set xlSht = xlBook.Sheets("Sheet1") ' // Create e-mail Item Set olItem = Application.CreateItem(olMailItem) With olItem .To = xlSht.Range("A1") .CC = xlSht.Range("c1") .subject = "test" .Display .Send End With ' // Close xlBook.Close SaveChanges:=True ' // Quit xlApp.Quit Set xlApp = Nothing Set xlBook = Nothing Set xlSht = Nothing Set olItem = Nothing End Sub 

查询:根据我的要求,收件人姓名应该从链接的Excel工作表中获取。

所有收件人的邮件地址放在Excel工作表的A列中。

这些值是dynamic的,它可能包含任意数量的邮件ID。

例:

A栏:

yhui@gmail.com abc@gmail.com ikj@gmail.com plo@gmail.com

这里有4个值,现在邮件应该同时发送给所有这4个收件人。

所以To字段应该包含:yhui@gmail.com; abc@gmail.com; ikj@gmail.com; plo@gmail.com

代码应该能够遍历列A到最后一行,并连接所有以分号(;)分隔的值。

试试这个收件人字段:

 .To = Join(xlApp.Transpose(xlSht.Range("A1", xlSht.Range("A9999").End(xlUp))), ";")