2017-06-14 1 views
0

J'essaie de dessiner des entrées modifiables à partir de cellules dans la feuille de calcul active. J'ai réussi à générer un email dans Outlook et attacher plusieurs fichiers. Le problème est qu'au lieu de faire défiler chaque cellule avec des données (et différentes entrées d'annuaire) en attachant "x" quantité de fichiers individuels, il attache le même fichier "x" fois.Joindre plusieurs fichiers à Outlook Email dans une boucle

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

Répondre

0

Dans votre variable x valeur de code reste même lors de l'exécution de la boucle. C'est pourquoi il attache le même fichier chaque fois que la boucle est exécutée.

Essayez cette

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

Je ne peux pas vous remercier assez! – Jimmy

0

C'est simple erreur - x est limite constante de boucle. Vous devez utiliser la variable LoopAttach au lieu de .

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

Je ne peux pas vous remercier assez! – Jimmy