以下脚本在excel中成功运行,但在通过.vbs文件或winautomation执行时抛出语法错误。我是vb的新手,请帮忙。
Sub Test()
sUser = "TheUserName"
sDN = "uid=" & sUser & ",o=users,dc=MyDomain,dc=it"
sRoot = "LDAP://MyLDAPServer/o=users,dc=MyDomain,dc=it"
Dim oDS: Set oDS = GetObject("LDAP:")
On Error GoTo AuthError
Dim oAuth: Set oAuth = oDS.OpenDSObject(sRoot, sDN, "ThePassword", &H200)
On Error GoTo 0
MsgBox "Login Successful"
Exit Sub
AuthError:
If Err.Number = -2147023570 Then
MsgBox "Wrong Username or password !!!"
End If
On Error GoTo 0
End Sub
答案 0 :(得分:2)
来自Handling Errors in VBScript。
Visual Basic中使用的方法与VBScript使用的方法之间几乎没有区别。主要区别在于VBScript不支持通过在标签上继续执行来进行错误处理的概念。换句话说,你不能在VBScript中使用On Error GoTo 。相反,使用On Error Resume Next,然后检查Err.Number和Errors集合的Count属性,如以下示例所示:(此处未提供示例 - 例如使用链接)
因此,您需要自己的错误处理代码部分。
On Error Resume Next
Dim oAuth: Set oAuth = oDS.OpenDSObject(sRoot, sDN, "ThePassword", &H200)
Select Case Err.Number
Case 0:
'ERROR_SUCCESS - do nothing
Case -2147023570
MsgBox Err.Number & ": " & Err.Description &Chr(10) & "Wrong Username or password !!!"
Err.Clear
Exit Sub
Case Else
'deal with other errors
MsgBox Err.Number & ": " & Err.Description
Err.Clear
Exit Sub
End Select
有关在Information.Err Method获取错误信息的更多信息。