2017-06-02 80 views
0

我需要生成一系列電子郵件,用於附加特定文件夾中的pdf文件。我是新手,但對我正在使用的代碼有一些瞭解。我的問題是,我無法控制正在生成的電子郵件數量。我希望能夠生成在我的目錄(行)中有條目的確切數量的電子郵件。在Outlook中使用目錄中的VBA生成電子郵件

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

你可以澄清「我無法控制電子郵件的數量」,當我現在運行宏它產生11個電子郵件您的代碼將產生正是'num_clients'電子郵件 – avb

+0

。如果我將更改爲B1,例如它會生成1封電子郵件。如果我將其更改爲B9,它會生成7.我知道這是對我的缺乏理解,但似乎無法弄清控制要生成的電子郵件範圍的代碼部分 – Jimmy

回答

0

這是你想什麼呢? (未經測試

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

相關問題