2016-05-13 75 views
-2

嘗試使用包含嵌入式圖像的VBA代碼創建Excel外的批量電子郵件工作簿。我無法對代碼應用「For i」,也無法弄清楚如何通過ListObject table從整個列表中發送電子郵件。對於下面的腳本,引用的圖表是「消息生成器」。我試圖發送一個單獨的電子郵件給列表中的每個人,直到列B中的行的值爲0.但是,我爲循環設置的整數似乎返回值0,就好像在列中沒有值行和列。使用excel的批量電子郵件

任何人都知道我可以發送創建工作簿發送批量電子郵件嗎?請參閱下面的腳本。謝謝!

Dim MainWB As Workbook 
Dim olApp As Outlook.Application 
Dim olemail As Outlook.MailItem 
Dim fso As Scripting.FileSystemObject 
Dim ts As Scripting.TextStream 
Dim SigPath As String, SigText As String 
SigPath = Environ("AppData") & "\Microsoft\Signatures\New.htm" 
    Set fso = New Scripting.FileSystemObject 
    Set ts = fso.OpenTextFile(SigPath) 
SigText = ts.ReadAll 
ts.Close 
    Set fso = Nothing 
    Set MainWB = ActiveWorkbook 

Dim Subject As String 
Dim Body As String 
Dim i As Integer 
Dim l As Integer 
l = NumberOfNonBlankRowsInColumn(2) - 2 'subtract 2 header rows 
    Set olApp = New Outlook.Application 

For i = 0 To l 
    Set olemail = olApp.CreateItem(olMailItem) 
    Subject = MainWB.Sheets("Message Generator").Range("B3").Offset(i, 0).Value 
    Body = MainWB.Sheets("Message Generator").Range("AB3").Offset(i, 0).Value 
    With olemail 
     .BodyFormat = olFormatHTML 
     .To = "[email protected]" 
     .Subject = Subject 
     .Body = Body 
     .Attachments.Add "C:\Users\Jacka\Documents\Test\logo.jpg" 
     .HTMLBody = "<img src='cid:logo.jpg'" & "width='309.5' height='39.5'><br>" & _vbanewline & .HTMLBody & SigText 
     .Display 
     End With 
     Set olemail = Nothing 
Next i 
    Set olApp = Nothing 
End Sub 

功能NumberOfNonBlankRowsInColumn(souceCol作爲整數)作爲整數

Dim NumberOfRowsInColumn As Integer, j As Integer 
Dim CurrentRowValue As String 
NumberOfRowsInColumn = Cells(Rows.Count, sourceCol).End(xlUp).row 

For j = 1 To NumberOfRowsInColumn 
    CurrentRowValue = Cells(j, sourceCol).Value 

If IsEmpty(CurrentRowValue) Or CurrentRowValue = "" Then 
Exit For 
End If 
Next j 
NumberOfNonBlankRowsInColumn = (j - 1) 
End Function 

回答

0

儘量不要犯這樣的錯誤。它有時而不是其他人的原因是因爲我的行以上的行有我的列,後來被刪除。因此,我將NonBlankRowsInColumn設置爲2(值開始處)並完成。請參閱下面編輯的功能。


功能NumberOfNonBlankRowsInColumn(souceCol作爲整數)作爲整數

Dim NumberOfRowsInColumn As Integer, j As Integer 
Dim CurrentRowValue As String 
NumberOfRowsInColumn = Cells(Rows.Count, sourceCol).End(xlUp).row 

For j = 2 To NumberOfRowsInColumn 
    CurrentRowValue = Cells(j, sourceCol).Value 

If IsEmpty(CurrentRowValue) Or CurrentRowValue = "" Then 
Exit For 
End If 
Next j 
NumberOfNonBlankRowsInColumn = (j - 1) 
End Function 
相關問題