【问题标题】:How to send mail to multiple recipients in outlook in vba如何在vba的outlook中向多个收件人发送邮件
【发布时间】:2017-06-15 10:14:35
【问题描述】:

以下代码适用于一位收件人。如何将同一封邮件发送给多个收件人。

如何发送附件以及如何在抄送中向多个收件人发送邮件。 所有的收件人都放在 xlSht 的 A 列中。

  All the CC recipients are placed in column B of xlSht.

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
                        sPath = "sss" \\workbook placed locally

                        Set xlApp = CreateObject("Excel.Application")

                        Set xlBook = xlApp.Workbooks.Open(sPath)

                        Set xlSht = xlBook.Sheets("Sheet1")

                    '   // Create e-mail Item
                        Set olItem = Application.CreateItem(olMailItem)

                        With olItem

                        .To = xlSht.Range("A1")  

                            .CC = xlSht.Range("B1")

                            .subject = "test"
                            .Display
                           .Send

【问题讨论】:

标签: excel vba outlook


【解决方案1】:

如果您从 MS-Excel 执行此操作会简单得多。打开您的工作簿并将此代码粘贴到模块中(未经测试

Option Explicit

Sub Sample()
    Dim OutApp As Object, OutMail As Object
    Dim ws As Worksheet
    Dim i As Long, lRow As Long

    Set OutApp = CreateObject("Outlook.Application")

    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row

        For i = 1 To lRow
            Set OutMail = OutApp.CreateItem(0)

            With OutMail
                .To = ws.Range("A" & i).Value
                .Cc = ws.Range("B" & i).Value
                .Subject = "Blah Blah"
                .Body = "Blah Blah"
                .Attachments.Add "C:\Temp\Sample.Txt"

                .Display
            End With
        Next i
    End With
End Sub

如果您仍想从 MS-Outlook 执行此操作,请尝试这样的操作(未经测试

Option Explicit

Const xlUp As Long = -4162

Sub Sample()
    Dim oXLApp As Object, oXLWb As Object, oXLWs As Object
    Dim i As Long, lRow As Long
    Dim olItem As Outlook.MailItem

    Set oXLApp = CreateObject("Excel.Application")
    Set oXLWb = oXLApp.Workbooks.Open("C:\MyExcelFile.Xlsx")
    Set oXLWs = oXLWb.Sheets("Sheet1")

    With oXLWs
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row

        For i = 1 To lRow
            Set olItem = Application.CreateItem(olMailItem)

            With olItem
                .To = oXLWs.Range("A" & i).Value
                .Cc = oXLWs.Range("B" & i).Value
                .Subject = "Blah Blah"
                .Body = "Blah Blah"
                .Attachments.Add "C:\Temp\Sample.Txt"

                .Display
            End With
        Next i
    End With
End Sub

【讨论】:

  • 嗨,Siddharth,您的代码运行良好。谢谢。但是,我的要求是同时将邮件发送到 A 列的所有单元格。即同时向多个用户发送邮件。
  • 那太好了:)
【解决方案2】:

不设置CC 属性,而是调用Recipients.Add(返回Recipient 对象)并将Recipient.Type 属性设置为olCC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2012-11-30
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    相关资源
    最近更新 更多