我完全不是VBScript开发人员。但通常情况下,我必须写一个小脚本来检查一些东西。它打开Excel,写入内容并关闭它。但那不是重点。关键是我无法为错误处理编写代码。这个脚本:
Sub Work()
On Error GoTo ErrMyErrorHandler
Dim objExcelApp
Dim wb
Dim ws
Set objExcelApp = CreateObject("Excel.Application")
Set wb = objExcelApp.Workbooks.Add(True)
Set ws = wb.Sheets(1)
ws.Cells(1,1).Value = "Hello"
ws.Cells(1,2).Value = "World"
wb.SaveAs("c:\test.xls")
objExcelApp.Quit()
Exit Sub
ErrMyErrorHandler:
MsgBox Err.Description, vbExclamation + vbOKCancel, "Error: " & CStr(Err.Number)
End Sub
Work()
给出了这个错误:
第2行是On Error
语句的行。我做错了什么?
谢谢。
答案 0 :(得分:4)
看起来你不能将自定义标签指向VB Script中的错误处理程序。你只能使用
on error goto 0 '(raises exceptions)
on error resume next '(ignores exceptions)
如果使用第二种语法,则可以通过Err全局变量捕获发生的异常:
if Err.Number <> 0 then MsgBox "Exception occurred: " & Err.Description
答案 1 :(得分:4)
Heximal是正确的,VBScript不允许错误处理程序的自定义标签。使用你的例子,你真的想要做这样的事情。
Sub Work
On Error Resume Next
Dim objExcelApp
Dim wb
Dim ws
Set objExcelApp = CreateObject("Excel.Application")
Set wb = objExcelApp.Workbooks.Add(True)
Set ws = wb.Sheets(1)
ws.Cells(1,1).Value = "Hello"
ws.Cells(1,2).Value = "World"
wb.SaveAs("c:\test.xls")
objExcelApp.Quit()
If Err.Number <> 0 Then ErrMyErrorHandler
End Sub
Sub ErrMyErrorHandler
MsgBox Err.Description, vbExclamation + vbOKCancel, "Error: " & CStr(Err.Number)
End Sub
Work()
但你应该明白,这不是最明智的代码。您应该在每个相关位置执行错误检查,并根据需要单独处理它们。如果您正在寻找全面的错误处理解决方案,那么您需要了解有关VBScript如何在内部工作的更多信息。请看以下链接。