以下是我用于通过Outlook向电子邮件地址列表发送电子邮件的Excel VBA代码。每个电子邮件地址都有一个需要发送的不同附件。我需要在此代码中进行哪些错误处理。现在所有的代码都是在进行电子邮件处理之前检查文件是否全部存在。 电子邮件列表位于Col A,从A2开始,要附加的文件位于Col B,从B2开始。文件的文件夹路径为E11,电子邮件主题行为E12,电子邮件正文位于Excel TextBox中。
Sub Loop1()
Dim Body As String, I As Integer, filePath As String, fs
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
'Create Outlook Session
Set objOutlook = CreateObject("Outlook.Application")
Range("A2").Select
StartRow = ActiveCell.Row
EndRow = Cells.Find(What:="*", After:=[A1], _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Set fs = CreateObject("Scripting.FileSystemObject")
Body = ActiveSheet.Shapes.Range(Array("TextBox 1")).TextFrame2.TextRange.Characters.Text
For I = StartRow To EndRow
filePath = Range("E1").Value & "\" & Range("B" & I).Value
If Not fs.FileExists(filePath) Then
Range("B" & I).Select
MsgBox ("The file " & vbCrLf & filePath & vbCrLf _
& " in Cell B" & I & " does not exist" _
& vbCrLf & "The macro is cancelled")
End
End If
Next I
For I = StartRow To EndRow
filePath = Range("E1").Value & "\" & Range("B" & I).Value
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
.Recipients.Add (Range("A" & I).Value)
.Subject = Range("E2").Value
.Body = Body
.Attachments.Add (filePath)
.Save
.Send
End With
Set objOutlookMsg = Nothing
Next I
Set objOutlook = Nothing
Set fs = Nothing
End Sub
答案 0 :(得分:1)
除了可能发生的情况之外,我无法真正说出你应该“测试”的内容。作为一个用户,它总是更好,更好地得到一个消息,帮助我理解错误,所以我可以想象我是否可以解决它。获得VBA标准的End或Debug弹出窗口根本无助于最终用户...它只能帮助开发人员...... 以下是您测试的一些想法:
这远不是可以测试的所有内容,但是您必须自己进行风险分析,以便编写额外代码。