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

时间:2017-06-19 05:42:28

标签: excel vba outlook-vba

这是代码:

适用于一位收件人。

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列中   片。

     

这些值是动态的,它可能包含任意数量的邮件   的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列到最后一列   row并连接由分号(;)

分隔的所有值

1 个答案:

答案 0 :(得分:1)

在收件人字段中尝试此操作:

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