在循环中将多个文件附加到Outlook电子邮件

时间:2017-06-14 10:01:42

标签: excel vba for-loop outlook email-attachments

我正在尝试从活动电子表格中的单元格中绘制可编辑的输入。我设法在Outlook中生成一封电子邮件并附加多个文件。

问题在于不是通过数据(和不同的目录输入)在每个单元格中循环,从而附加" x"单个文件的数量,它附加相同的文件" x"次。

Option Explicit

Sub TESTCreateEmail()


    'define variables for outlook
    Dim olApp As Outlook.Application
    Dim olMail As Outlook.MailItem

    'define variables for attachements to email
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim LoopAttach As Integer
    Dim x As Integer
    Dim y As Integer

    x = Range("E9", Range("E100").End(xlUp)).Count

    'set parameters for outlook
    Set olApp = New Outlook.Application
    Set olMail = olApp.CreateItem(olMailItem)

    'set parameters for attachements to email
    Set wb = ThisWorkbook
    Set ws = wb.Application.ActiveSheet

    'create email
    With olMail

        .To = ws.Range("H9")
        .CC = ws.Range("I9")
        olMail.SentOnBehalfOfName = "email@email.com"
        olMail.Recipients.ResolveAll
        .BodyFormat = olFormatHTML

        olMail.HTMLBody = "<html><p><font face=""Calibri""><font size=3>Dear Sir/ Madam,</p>"

        'loop to attach multiple files
        For LoopAttach = 1 To x
            .Attachments.Add ws.Range("E9").Offset(x - 1, 0) _
            & ws.Range("F9").Offset(x - 1, 0)
        Next LoopAttach

       .Display

    End With

End Sub

Examples of Excel input and resulting Outlook email

2 个答案:

答案 0 :(得分:0)

在您的代码变量中,x值在执行循环期间保持不变。这就是为什么每次执行循环时都附加相同的文件。

试试这个

    For LoopAttach = x To 1 Step -1
        .Attachments.Add ws.Range("E9").Offset(LoopAttach - 1, 0) _
        & ws.Range("F9").Offset(LoopAttach - 1, 0)
    Next LoopAttach

答案 1 :(得分:0)

这是一个简单的错误 - x是for循环的常量限制。您需要使用LoopAttach变量而不是x

For LoopAttach = 1 To x
    .Attachments.Add ws.Range("E9").Offset(LoopAttach - 1, 0) _
    & ws.Range("F9").Offset(LoopAttach - 1, 0)
Next LoopAttach