Vbscript 错误语句中的错误

Vbscript 错误语句中的错误,vbscript,Vbscript,我完全不是一个VBScript开发人员。但正如通常发生的那样,我不得不写一个小脚本来检查一些东西。它打开Excel,向其中写入内容,然后关闭。但这不是重点。关键是我无法为错误处理编写代码。此脚本: Sub Work() On Error GoTo ErrMyErrorHandler Dim objExcelApp Dim wb Dim ws Set objExcelApp = CreateObject("Excel.Application") Set wb = objExcelApp.Work

我完全不是一个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
语句的行。我做错了什么


谢谢。

看起来您无法将自定义标签指向VB脚本中的错误处理程序。你只能使用

on error goto 0 '(raises exceptions)
on error resume next '(ignores exceptions)
如果使用第二种语法,则可以通过Err全局变量捕捉发生的异常:

  if Err.Number <> 0 then MsgBox "Exception occurred: " & Err.Description

如果错误号为0,则MsgBox“发生异常:”&Err.Description

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()
子工作
出错时继续下一步
Dim objExcelApp
模糊wb
昏暗的天气
设置objExcelApp=CreateObject(“Excel.Application”)
Set wb=objExcelApp.Workbooks.Add(True)
设置ws=wb.Sheets(1)
ws.Cells(1,1).Value=“你好”
ws.Cells(1,2).Value=“世界”
wb.SaveAs(“c:\test.xls”)
objExcelApp.Quit()
如果错误号为0,则ErrMyErrorHandler
端接头
子ErrMyErrorHandler
MsgBox错误描述,VBEQUOTION+vbOKCancel,“错误:&CStr(错误编号)
端接头
工作()
但是您应该真正理解,这不是最明智的构造代码。您应该在每个相关点执行错误检查,并根据需要单独处理。如果您正在寻找全面的错误处理解决方案,那么您需要更多地了解VBScript如何在内部工作。看看下面的链接


&错误说明