带有不同附件的VBA电子邮件合并的错误处理
下面是我用来通过Outlook向电子邮件地址列表发送电子邮件的Excel VBA代码。每个电子邮件地址都有一个需要发送的不同附件。在这段代码中我需要什么错误处理。现在代码所做的就是在处理电子邮件之前检查文件是否存在。 电子邮件列表位于A栏,从A2开始,要附加的文件位于B栏,从B2开始。文件的文件夹路径为E11,电子邮件主题行为E12,电子邮件正文位于Excel文本框中带有不同附件的VBA电子邮件合并的错误处理,vba,excel,error-handling,Vba,Excel,Error Handling,下面是我用来通过Outlook向电子邮件地址列表发送电子邮件的Excel VBA代码。每个电子邮件地址都有一个需要发送的不同附件。在这段代码中我需要什么错误处理。现在代码所做的就是在处理电子邮件之前检查文件是否存在。 电子邮件列表位于A栏,从A2开始,要附加的文件位于B栏,从B2开始。文件的文件夹路径为E11,电子邮件主题行为E12,电子邮件正文位于Excel文本框中 Sub Loop1() Dim Body As String, I As Integer, filePath A
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
除了可能发生的情况外,我真的不能说你“应该”测试什么。作为一个用户,得到一条消息来帮助我理解哪里出了问题总是更好、更好的,这样我就可以知道我是否能修复它。获取VBA的标准端或调试弹出窗口对最终用户毫无帮助。。。它只能帮助开发者。。。 以下是您测试内容的一些想法:
- CreateObject(“Outlook.application”)。把一个错误转到。。。处理程序,因此如果无法创建Outlook,您可以告诉用户某些错误
- 确认我们在正确的表格中
- 电子邮件标题是否已填写?你可能希望它是。。。如果它的长度超过,比如说,50个字符,那么它也可能会被唤醒
- 该文件夹也必须填写,在将其与文件名连接之前,您需要验证用户是否使用尾随\输入该文件夹
- 电子邮件必须遵循正常的电子邮件格式,即没有空格,只有字母、数字和数字。而且uuu还可以。也许您可以验证@后面的部分是否正确
- 文本框必须存在。您可以在这里使用“on error goto…”来验证其存在性
- 文本框必须有一些内容
- 附件的大小可能会受到限制,因此请验证它是否太大
- 在创建电子邮件的语句周围也使用“on error goto…”。我认为objOutlook.CreateItem和.Save和.Send更可能失败李>