2017-06-14 16 views
0

Ich versuche, bearbeitbare Eingaben von Zellen in der aktiven Tabelle zu zeichnen. Ich habe es geschafft, eine E-Mail in Outlook zu erstellen und mehrere Dateien anzuhängen.Mehrere Dateien an Outlook anhängen E-Mail in einer Schleife

Das Problem ist, anstatt durch jede Zelle mit Daten (und verschiedenen Verzeichniseingaben) durchzufädeln und dabei "x" Anzahl der einzelnen Dateien anzufügen, es fügt die gleiche Datei "x" mal an.

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

Antwort

0

In der Code Variable x-Wert bleibt während der Ausführung der Schleife gleich. Deshalb wird jedes Mal die gleiche Datei angehängt, wenn die Schleife ausgeführt wird.

Versuchen Sie, diese

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

Ich kann Ihnen nicht genug danken! – Jimmy

0

Diese einfache Fehler ist - x konstant Grenze für Schleife ist. Sie müssen LoopAttach Variable anstelle von x verwenden.

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

Ich kann dir nicht genug danken! – Jimmy

Verwandte Themen