我有以下 vba 代码是较大脚本的一部分。我遇到的问题是即使 Outlook 消息已保存到系统上的目录中,SaveAs 函数也会不断抛出错误。检查 Err 对象不会产生任何结果,因为一切都是空白或 0。
另一个奇怪的问题是,当错误处理代码如下所示被注释掉时,脚本会正确执行而不会引发任何错误。在我看来,错误处理代码本身似乎会导致问题。VSTO 目前不是一个选项。
- 以下方法是否有替代方法?
- 你能提供一些有用的调试技巧来帮助这种情况吗?
这是我正在使用的代码
For Each itm In itemsToMove
Dim mItem As MailItem
Set mItem = itm
' On Error Resume Next
sSubject = mItem.Subject
sDate = Format(mItem.CreationTime, "yyyymmdd_hhnnss_")
FNme = DirName & sDate & StripIllegalChar(sSubject) & ".msg"
**mItem.SaveAs FNme, olMSG**
iCount = iCount + 1
'ErrorHandler:
' MsgBox ("The email " & FNme & " failed to save.")
' MsgBox Err.Description & " (" & Err.Number & ")"
' Set objNameSpace = Nothing
' Set objOutlook = Nothing
' Set objNameSpace = Nothing
' Set objInbox = Nothing
' Set objInbox = Nothing
' Set itemsToMove = Nothing
' Set itemsToMove = Nothing
' Exit Sub
Next
解决方案:
Sub SomeSub
....
....
For Each itm In itemsToMove
Dim mItem As MailItem
Set mItem = itm
On Error GoTo ErrorHandler
sSubject = mItem.Subject
sDate = Format(mItem.CreationTime, "yyyymmdd_hhnnss_")
FNme = DirName & sDate & StripIllegalChar(sSubject) & ".msg"
mItem.SaveAs FNme, olMSG
iCount = iCount + 1
Next
End If
Exit Sub
ErrorHandler:
MsgBox ("The email " & FNme & " failed to save.")
MsgBox Err.Description & " (" & Err.Number & ")"
Set objNameSpace = Nothing
Set objOutlook = Nothing
Set objNameSpace = Nothing
Set objInbox = Nothing
Set objInbox = Nothing
Set itemsToMove = Nothing
Set itemsToMove = Nothing
Resume Next
End Sub