【问题标题】:Retrieve multiple recipient names from Excel sheet从 Excel 工作表中检索多个收件人姓名
【发布时间】:2020-06-23 15:37:28
【问题描述】:

这是代码:

它适用于一个收件人。

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 列 床单。

而且这些值是动态的,它可能包含任意数量的邮件 身份证。

例子:

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 列直到最后 行并连接用分号 (;) 分隔的所有值

【问题讨论】:

  • 使用For循环。
  • 谢谢,使用for循环邮件可以一次发送给一个收件人。

标签: excel vba outlook


【解决方案1】:

在收件人字段中试试这个:

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

【讨论】:

  • @Sai 欢迎,乐于助人。我注意到到目前为止,您没有接受对您的问题的任何回答。当它解决您的问题时,请考虑接受答案。检查答案左上角的灰色复选标记将其变为绿色。谢谢:)
  • 相信我,我从来不知道它是这样工作的!再次感谢。我已经接受了答案:)
  • @Sai 没问题 :)。感谢您的尝试,但还没有。您实际上“投了赞成票”,这很好,但是三角形下方的v 表单中有一个灰色形状,当您单击它时,它应该变成绿色以将答案标记为已接受。 :)
  • @A.S.H 感谢您的详细步骤,现已接受。 :)
猜你喜欢
  • 1970-01-01
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
相关资源
最近更新 更多