当我试图获取已经打开的网页的文档元素时,我得到了对象所需的错误。我厌倦了以下
set ie = WScript.CreateObject("InternetExplorer.Application")
ie.navigate("....")
ie.Document.GetElementsByID("....").click 'leads to new web page.
它像从javascript弹出,所以我无法直接访问此页面的文档元素(我不能使用导航,因为它喜欢填写表单与外部详细信息在单独的形式)。所以我厌倦了以下来获得通过使用这些
获取已经打开窗口的方法的页面元素Set objIE = GetIE("Location Details")
...
Function GetIE(Title)
Dim objShell, objIE
Set objShell = CreateObject("Shell.Application")
For Each objIE In objShell.Windows
If InStr(objIE.LocationName, Title) > 0 Then
Set GetIE = objIE
Exit Function
End If
Next
End Function
当我使用此GetIE功能时,我在
上遇到运行时错误set objIE = GetIE("Location Details")
类似于GetIE所需的对象,请帮我解决此问题
答案 0 :(得分:0)
Set x = y
这样的设置分配会抛出一个"所需的对象"
错误,如果你不是一个对象。Nothing
表示失败;否则Set assigment会崩溃。在代码中:
Option Explicit
Function f1(bObj)
If bObj Then
Set f1 = New RegExp
End If
End Function
Function f2(bObj)
If bObj Then
Set f2 = New RegExp
Else
Set f2 = Nothing
End If
End Function
Dim bObj, sFnc, oObj
For Each bObj In Array(True, False)
For Each sFnc In Split("f1 f2")
WScript.StdOut.Write sFnc & "(" & bObj & ") => "
On Error Resume Next
Set oObj = GetRef(sFnc)(bObj)
If Err.Number Then
WScript.Echo TypeName(GetRef(sFnc)(bObj)), Err.Description
Else
WScript.Echo TypeName(oObj), "ok"
End If
On Error GoTo 0
Next
Set oObj = f2(bObj)
If oObj Is Nothing Then
WScript.Echo "oObj Is Nothing =>", "Object not aquired"
Else
WScript.Echo "Got an object"
End If
Next
输出:
cscript 25346586.vbs
f1(True) => IRegExp2 ok
f2(True) => IRegExp2 ok
Got an object
f1(False) => Empty Object required
f2(False) => Nothing ok
oObj Is Nothing => Object not aquired