繁体   English   中英

带循环发送多个电子邮件的VBA代码

[英]VBA code with loop sending multiple emails

我在编码方面需要一点帮助,可以自动发送电子邮件,但是他从电子表格中提取信息,并且在发送电子邮件时,他正在根据电子表格中的行数来复制电子邮件。 例如,在A栏中:A1名称; 答:A2José; 答:A3玛丽亚。 该代码将发送两封电子邮件给Jose和两封电子邮件给Maria。

Sub FeriasÀVencer()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False



  Dim r1  As Range, r2 As Range, N As Long
  Dim r3  As Range, r4 As Range, N1 As Long
  Dim r5  As Range, r6 As Range, N2 As Long
  Dim r7  As Range, r8 As Range, N3 As Long
  Dim r9  As Range, r10 As Range, N4 As Long
  Dim r11 As Range, r12 As Range, N5 As Long
  Dim r13 As Range, r14 As Range, N6 As Long
  Dim r15 As Range, r16 As Range, N7 As Long
  Dim r17 As Range, r18 As Range, N8 As Long
  Dim ws As Worksheet
  Dim wB As Workbook

  Worksheets.Add(After:=Worksheets(1)).Name = "Sheet1"


    Set wB = ActiveWorkbook
    Set ws = Sheets("Sheet1")



  Workbooks.Open "X:\TESTE1.xls"
   N = Sheets("Sheet2").Cells(Rows.count, "B").End(xlUp).Row
  N1 = Sheets("Sheet2").Cells(Rows.count, "C").End(xlUp).Row
  N2 = Sheets("Sheet2").Cells(Rows.count, "D").End(xlUp).Row
  N3 = Sheets("Sheet2").Cells(Rows.count, "G").End(xlUp).Row
  N4 = Sheets("Sheet2").Cells(Rows.count, "H").End(xlUp).Row
  N6 = Sheets("Sheet2").Cells(Rows.count, "M").End(xlUp).Row
  N5 = Sheets("Sheet2").Cells(Rows.count, "O").End(xlUp).Row
  N7 = Sheets("Sheet2").Cells(Rows.count, "P").End(xlUp).Row
  N8 = Sheets("Sheet2").Cells(Rows.count, "Q").End(xlUp).Row



  Set r1 = Sheets("Sheet2").Range("B3:B" & N)
  Set r3 = Sheets("Sheet2").Range("C3:C" & N1)
  Set r5 = Sheets("Sheet2").Range("D3:D" & N2)
  Set r7 = Sheets("Sheet2").Range("G3:G" & N3)
  Set r9 = Sheets("Sheet2").Range("H3:H" & N4)
  Set r11 = Sheets("Sheet2").Range("M3:M" & N5)
  Set r13 = Sheets("Sheet2").Range("O3:O" & N6)
  Set r15 = Sheets("Sheet2").Range("P3:P" & N7)
  Set r17 = Sheets("Sheet2").Range("Q3:Q" & N8)



  wB.Activate
  ws.Select

  Set r2 = Sheets("Sheet1").Range("A1")
  Set r4 = Sheets("Sheet1").Range("B1")
  Set r6 = Sheets("Sheet1").Range("C1")
  Set r8 = Sheets("Sheet1").Range("D1")
  Set r10 = Sheets("Sheet1").Range("E1")
  Set r12 = Sheets("Sheet1").Range("F1")
  Set r14 = Sheets("Sheet1").Range("G1")
  Set r16 = Sheets("Sheet1").Range("H1")
  Set r18 = Sheets("Sheet1").Range("I1")


  r1.Copy r2
  r3.Copy r4
  r5.Copy r6
  r7.Copy r8
  r9.Copy r10
  r11.Copy r12
  r13.Copy r14
  r15.Copy r16
  r17.Copy r18


  Columns("A:I").Select
  Columns("A:I").EntireColumn.AutoFit
  Range("A1").Select
  Columns("D:F").Select
  Selection.Font.Bold = False
  Selection.Font.Bold = True
  Range("A1").Select



  Workbooks("TEST1.xls").Close False



  For vx = 2 To 9999


  Dim k As Integer
    k = 2
    Sheets("Sheet1").Select
    Cells(k, 4).Select
    Do While ActiveCell.Value <> ""
        If (ActiveCell.Value - Now()) < 30 Then


    Dim mailDb As Object
    Dim MailDoc As Object
    Dim Body As Object
    Dim Session As Object
    Dim notesField As Object
    Dim notesEmbeddedObject As Object
    Dim AttachME As Object
    Dim EmbedObj As Object
    Dim UserName As String
    Dim pass As String




    Set Session = CreateObject("Lotus.NotesSession")



    Call Session.Initialize(pass)



    Set mailDb = Session.GETDATABASE("", "names.nsf") 



    If Not mailDb.IsOpen = True Then
        Call mailDb.Open
    End If

    UserName = Session.UserName



    Set MailDoc = mailDb.CREATEDOCUMENT
    Call MailDoc.ReplaceItemValue("Form", "Memo")


    vcod = Cells(vx, 1)
    vname = Cells(vx, 2)
    vlogin = Cells(vx, 3)
    IA = Cells(vx, 4)
    FA = Cells(vx, 5)
    LF = Cells(vx, 6)
    vglogin = Cells(vx, 9)


    If vlogin & vglogin = "" Then
    Exit For
    End If




    Call MailDoc.ReplaceItemValue("SendTo", vlogin)
    Call MailDoc.ReplaceItemValue("CopyTo", vglogin)        
    Call MailDoc.AppendItemValue("blindcopyTo", "w")




    Call MailDoc.ReplaceItemValue("Subject", "Help -  " & vname)



    Set Body = MailDoc.CREATERICHTEXTITEM("Body")
    Call Body.APPENDTEXT("Prezado Sr.(a) " & vname & " - Codigo: " & vcod)
    Call Body.ADDNEWLINE(3)
    Call Body.APPENDTEXT(" Informamos ###########################################.")
    Call Body.ADDNEWLINE(2)
    LimiteFerias = LimiteFerias - 30
    Call Body.APPENDTEXT(" Portanto ###############################################.")
    Call Body.ADDNEWLINE(1)
    Call Body.ADDNEWLINE(2)
    Call Body.APPENDTEXT(" Dúvidas ###################################################")
    Call Body.ADDNEWLINE(3)
    Call Body.APPENDTEXT(" ######################################## ")



    MailDoc.SAVEMESSAGEONSEND = True



    Call MailDoc.ReplaceItemValue("PostedDate", Now())
    Call MailDoc.SEND(False)


    Set mailDb = Nothing
    Set MailDoc = Nothing
    Set Body = Nothing
    Set Session = Nothing

        End If
        k = k + 1
        Cells(k, 4).Select
    Loop


Next

Application.DisplayAlerts = False
Sheets("Sheet1").Select
ActiveWindow.SelectedSheets.Delete

Sheets("Sheet2").Select

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True


End Sub

似乎For ... Next循环中的Do ... While循环结构不正确。 For循环将变量传递到Do循环,该循环对所有变量重复。 您必须找到一种减少变量使用的方法,以免重复使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM