2017-06-02 9 views
0

特定のフォルダからpdfファイルを添付する一連の電子メールを生成する必要があります。私は初心者ですが、私が使っているコードをある程度理解しています。私の問題は、生成される電子メールの数を制御できないことです。私はディレクトリ(行)にエントリがある電子メールの正確な数を生成できるようにしたい。ディレクトリのVBAを使用してOutlookで電子メールを生成

enter image description here

これはコードで、任意の助けをいただければ幸いです。

Sub create_email() 
    'On Error Resume Next 
    'Dim oMail As Outlook.MailItem` 
    'Dim num_clients, start_row As Integer` 

    Sheets("Control").Activate 
    start_row = Range("start_row").row 
    num_clients = Range("B100").End(xlUp).row - start_row 

    For i = 1 To num_clients 
     Set oMail = Outlook.Application.CreateItem(olMailItem) 

     'Subject line 
     oMail.Subject = Range("J9").Offset(i - 1, 0) 

     'Distribution list 
     Set RecipTo = oMail.Recipients.Add(Range("K9").Offset(i - 1, 0)) 
     RecipTo.Type = olTo 
     Set RecipCC = oMail.Recipients.Add(Range("L9").Offset(i - 1, 0)) 
     RecipCC.Type = olCC 
     oMail.SentOnBehalfOfName = "[email protected]" 
     oMail.Recipients.ResolveAll 

     'Attachments + message 
     oMail.Attachments.Add Range("E9").Offset(i - 1, 0) & "\" & Range("F9").Offset(i - 1, 0) 
     oMail.HTMLBody = "<html><p><font face=""Calibri""><font size=3>Dear Sir/ Madam,</p>" & _ 
        "<html><p><font face=""Calibri"">Kind regards,</p>" 

     'Displays email pre-send 
     oMail.Display 
     Sheets("Control").Activate 

     Set oMail = Nothing 
    Next i 
End Sub 
+0

あなたは「私は電子メールの数を制御することはできません」明確にでき、あなたのコードは正確に 'num_clients'メール – avb

+0

を生成します。たとえば、をB1に変更すると、1つの電子メールが生成されます。私はそれをB9に変更すると7を生成します。これは私に代わって理解が不足していることを知っていますが、生成される電子メールの範囲を制御するコードの部分を理解できないようです。 – Jimmy

答えて

0

は、あなたがしようとしている何本か?私は今では11通の電子メールを生成するマクロを実行すると(未テスト)

Sub create_email() 
    Dim OutApp As Object, oMail As Object 
    Dim wb As Workbook, ws As Worksheet 
    Dim i As Long, start_Rows As Long, Last_Row As Long 

    Set wb = ThisWorkbook 
    Set ws = wb.Sheets("Control") 

    With ws 
     start_Row = .Range("start_row").Row '<~~ Start Row 
     Last_Row = .Range("B" & .Rows.Count).End(xlUp).Row '<~~ End Row 

     Set OutApp = CreateObject("Outlook.Application") 

     For i = start_Row To Last_Row '<~~ Loop from start row to end row 
      Set oMail = OutApp.CreateItem(0) 

      With oMail 
       .Subject = ws.Range("I" & i).Value 
       .To = ws.Range("J" & i).Value 
       .Cc = ws.Range("K" & i).Value 
       .SentOnBehalfOfName = "[email protected]" 
       .Attachments.Add ws.Range("D" & i).Value & "\" & ws.Range("E" & i).Value 
       .HTMLBody = "<html><p><font face=""Calibri""><font size=3>Dear Sir/ Madam,</p>" & _ 
          "<html><p><font face=""Calibri"">Kind regards,</p>" 

       .Display 
      End With 
     Next i 
    End With 
End Sub 
+0

私は試してみますこれは私ができる時です。ありがとう – Jimmy

関連する問題