我有以下vba代碼是更大的腳本的一部分。我遇到的問題是,即使Outlook郵件已保存到系統上的某個目錄,SaveAs功能也會不斷拋出錯誤。檢查Err對象不會產生任何結果,因爲所有內容都是空白或0。爲什麼SaveAs方法拋出錯誤?
另一個奇怪的問題是,當錯誤處理代碼被註釋掉,因爲它在下面,腳本正確執行而不會引發任何錯誤。對我來說,似乎錯誤處理代碼本身導致了這個問題。 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
是怎麼回事?那不就是每次都退出Sub嗎? – Ahmad
那應該是下一個,不是嗎? – falstro
正確,我將錯誤處理程序重構爲Sub的結尾,主要原因是我不想完全退出,直到處理完所有項目 – Ahmad