2017-06-14 17 views
0

アクティブなスプレッドシートのセルから編集可能な入力を描画しようとしています。私はOutlookで電子メールを生成し、複数のファイルを添付することができました。複数のファイルをOutlook電子メールにループで添付する

問題は、データ(および異なるディレクトリ入力)を持つ各セルを循環させる代わりに、「x」個の個々のファイルを添付して、同じファイルを「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 protected]" 
     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

答えて

0

はループを実行中に同じままです。そのため、ループが実行されるたびに同じファイルがアタッチされます。

この

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 
+0

十分にありがとうございます! – Jimmy

0

を試してみてくださいこれは単純なミスである - Xは、ループのための一定の限度です。 xの代わりにLoopAttach変数を使用する必要があります。

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

十分にありがとうございます! – Jimmy

関連する問題