VBA:在Internet Explorer上选择特定选项卡
我在这里有另一篇关于同一个整体问题的不同问题的帖子:。现在,我的编码出现了一个新问题(我将在下面发布其中的一部分),如果我使用多个选项卡打开Internet Explorer,我的代码将不再填充文本框-,即使该选项卡是当前正在查看的选项卡。只要我关闭所有其他选项卡,代码就会完美地运行 如果该选项卡在URL处命名为VBA:在Internet Explorer上选择特定选项卡,vba,internet-explorer,tabs,internet-explorer-11,getelementsbyclassname,Vba,Internet Explorer,Tabs,Internet Explorer 11,Getelementsbyclassname,我在这里有另一篇关于同一个整体问题的不同问题的帖子:。现在,我的编码出现了一个新问题(我将在下面发布其中的一部分),如果我使用多个选项卡打开Internet Explorer,我的代码将不再填充文本框-,即使该选项卡是当前正在查看的选项卡。只要我关闭所有其他选项卡,代码就会完美地运行 如果该选项卡在URL处命名为Tab1:https://sub.website.com/dir/,如何在此网站上用多个选项卡填写表单 以下是正在使用的代码(由提供帮助): 使用Shell窗口循环并保留找到的第一个窗口
Tab1
:https://sub.website.com/dir/
,如何在此网站上用多个选项卡填写表单
以下是正在使用的代码(由提供帮助):
使用Shell窗口循环并保留找到的第一个窗口。关闭剩余的IE选项卡/窗口
Sub testTabClose()
Dim oShell As Object
Dim oWin As Object
Dim IE As Object
Dim lTotlWin As Long
Dim lCtr
Dim lCtr2
Set oShell = CreateObject("Shell.Application")
Set oWin = oShell.Windows()
lTotlWin = oWin.Count - 1 '/ Starts with zero
For lCtr = 0 To lTotlWin
If UCase(oWin.Item(lCtr).FullName) Like "*IEXPLORE.EXE" Then
Set IE = oWin.Item(lCtr)
'/ Found it, jump out.
Exit For
End If
Next
'/ Keep the first tab. Close rest of them
For lCtr2 = lCtr + 1 To oWin.Count - 1
If lCtr2 <> lCtr Then
oWin.Item(lCtr2).Quit '/ Kill the tab.
End If
Next
End Sub
子测试选项卡关闭()
将oShell作为对象
将oWin作为对象
模糊的物体
我会赢的
昏暗的lCtr
Dim lCtr2
设置oShell=CreateObject(“Shell.Application”)
Set oWin=oShell.Windows()
lTotlWin=oWin.Count-1'/以零开头
对于lCtr=0到lTotlWin
如果UCase(oWin.Item(lCtr.FullName)像“*IEXPLORE.EXE”,那么
设置IE=oWin.项目(lCtr)
’/找到了,跳出来。
退出
如果结束
下一个
“/保留第一个选项卡。他们中的其他人
对于lCtr2=lCtr+1到oWin.Count-1
如果lCtr2 lCtr,则
oWin.Item(lCtr2)。退出“/终止选项卡。
如果结束
下一个
端接头
要使用选项卡名称进行标识,这将起作用:
Set oShell = CreateObject("Shell.Application")
Set oWin = oShell.Windows()
lTotlWin = oWin.Count - 1 '/ Starts with zero
For lCtr = 0 To lTotlWin
If lTotlWin >= lCtr Then
If UCase(oWin.Item(lCtr).FullName) Like "*IEXPLORE.EXE" Then
If IE Is Nothing Then
Set IE = oWin.Item(lCtr)
End If
If oWin.Item(lCtr).document.Title <> "This is the title I am looking for." Then
'/ This tab is not needed.
oWin.Item(lCtr).Quit
End If
End If
End If
Next
Set oShell=CreateObject(“Shell.Application”)
Set oWin=oShell.Windows()
lTotlWin=oWin.Count-1'/以零开头
对于lCtr=0到lTotlWin
如果lTotlWin>=lCtr,则
如果UCase(oWin.Item(lCtr.FullName)像“*IEXPLORE.EXE”,那么
如果我什么都不是
设置IE=oWin.项目(lCtr)
如果结束
如果oWin.Item(lCtr.document.Title)“这就是我要找的标题”,那么
“/不需要此选项卡。
oWin.Item(lCtr).退出
如果结束
如果结束
如果结束
下一个
使用Shell窗口循环并保留找到的第一个窗口。关闭剩余的IE选项卡/窗口
Sub testTabClose()
Dim oShell As Object
Dim oWin As Object
Dim IE As Object
Dim lTotlWin As Long
Dim lCtr
Dim lCtr2
Set oShell = CreateObject("Shell.Application")
Set oWin = oShell.Windows()
lTotlWin = oWin.Count - 1 '/ Starts with zero
For lCtr = 0 To lTotlWin
If UCase(oWin.Item(lCtr).FullName) Like "*IEXPLORE.EXE" Then
Set IE = oWin.Item(lCtr)
'/ Found it, jump out.
Exit For
End If
Next
'/ Keep the first tab. Close rest of them
For lCtr2 = lCtr + 1 To oWin.Count - 1
If lCtr2 <> lCtr Then
oWin.Item(lCtr2).Quit '/ Kill the tab.
End If
Next
End Sub
子测试选项卡关闭()
将oShell作为对象
将oWin作为对象
模糊的物体
我会赢的
昏暗的lCtr
Dim lCtr2
设置oShell=CreateObject(“Shell.Application”)
Set oWin=oShell.Windows()
lTotlWin=oWin.Count-1'/以零开头
对于lCtr=0到lTotlWin
如果UCase(oWin.Item(lCtr.FullName)像“*IEXPLORE.EXE”,那么
设置IE=oWin.项目(lCtr)
’/找到了,跳出来。
退出
如果结束
下一个
“/保留第一个选项卡。他们中的其他人
对于lCtr2=lCtr+1到oWin.Count-1
如果lCtr2 lCtr,则
oWin.Item(lCtr2)。退出“/终止选项卡。
如果结束
下一个
端接头
要使用选项卡名称进行标识,这将起作用:
Set oShell = CreateObject("Shell.Application")
Set oWin = oShell.Windows()
lTotlWin = oWin.Count - 1 '/ Starts with zero
For lCtr = 0 To lTotlWin
If lTotlWin >= lCtr Then
If UCase(oWin.Item(lCtr).FullName) Like "*IEXPLORE.EXE" Then
If IE Is Nothing Then
Set IE = oWin.Item(lCtr)
End If
If oWin.Item(lCtr).document.Title <> "This is the title I am looking for." Then
'/ This tab is not needed.
oWin.Item(lCtr).Quit
End If
End If
End If
Next
Set oShell=CreateObject(“Shell.Application”)
Set oWin=oShell.Windows()
lTotlWin=oWin.Count-1'/以零开头
对于lCtr=0到lTotlWin
如果lTotlWin>=lCtr,则
如果UCase(oWin.Item(lCtr.FullName)像“*IEXPLORE.EXE”,那么
如果我什么都不是
设置IE=oWin.项目(lCtr)
如果结束
如果oWin.Item(lCtr.document.Title)“这就是我要找的标题”,那么
“/不需要此选项卡。
oWin.Item(lCtr).退出
如果结束
如果结束
如果结束
下一个
以下是我在自动化现有IE窗口时通常使用的方法:
Sub Tester()
Dim IE As Object
Set IE = GetIE("http://www.google.com")
Debug.Print IE.document.Title
'work with IE
End Sub
Function GetIE(sLocation As String) As Object
Dim objShell As Object, objShellWindows As Object, o As Object
Dim sURL As String
Dim retVal As Object
Set retVal = Nothing
Set objShell = CreateObject("Shell.Application")
Set objShellWindows = objShell.Windows
For Each o In objShellWindows
sURL = ""
On Error Resume Next 'because may not have a "document" property
'Check the URL and if it's the one you want then
' assign the window object to the return value and exit the loop
sURL = o.document.Location
On Error GoTo 0
If sURL Like sLocation & "*" Then
Set retVal = o
Exit For
End If
Next o
Set GetIE = retVal
End Function
以下是我在自动化现有IE窗口时通常使用的方法:
Sub Tester()
Dim IE As Object
Set IE = GetIE("http://www.google.com")
Debug.Print IE.document.Title
'work with IE
End Sub
Function GetIE(sLocation As String) As Object
Dim objShell As Object, objShellWindows As Object, o As Object
Dim sURL As String
Dim retVal As Object
Set retVal = Nothing
Set objShell = CreateObject("Shell.Application")
Set objShellWindows = objShell.Windows
For Each o In objShellWindows
sURL = ""
On Error Resume Next 'because may not have a "document" property
'Check the URL and if it's the one you want then
' assign the window object to the return value and exit the loop
sURL = o.document.Location
On Error GoTo 0
If sURL Like sLocation & "*" Then
Set retVal = o
Exit For
End If
Next o
Set GetIE = retVal
End Function
每个IE窗口都有各种相关属性,您可以测试它们是否是您想要的(而不是只使用第一个)<代码>位置和
标题
似乎是一个很好的起点。我以前从未用IE编码过。在执行Set doc=IE.document
之后,我用debug.print doc.title
验证了所需的选项卡/文档标题。一旦我得到了这个名字,是否有一个简单的和语句我可以做,例如:doc.tab(“name”)
或者我将如何使用它?每个IE窗口都有不同的属性,你可以测试它是否是你想要的(而不是仅仅使用第一个)<代码>位置
和标题
似乎是一个很好的起点。我以前从未用IE编码过。在执行Set doc=IE.document
之后,我用debug.print doc.title
验证了所需的选项卡/文档标题。一旦我得到了这个名字,是否有一个简单的语句,比如:doc.tab(“name”)
或者我将如何使用它?