我无法找到如何让excel VBA与已经打开的特定IE窗口进行交互。
这是我的过程:
我打开IE浏览器,导航到网站,输入我的用户名和pw,点击登录。打开一个新的IE窗口,我用它来输入会员号码并搜索会员信息。
我正在尝试创建一个VBA脚本,它将与我成功登录后打开的IE窗口进行交互(开始自动化一些更平凡的任务)。我在网上看过很多关于如何让VBA打开一个新的IE窗口,然后与之交互的教程。但是,我真的很难找到有关如何选择特定的已打开的IE窗口并与之交互的信息。
我已经尝试过这个快速测试,看看我是否可以选择正确的IE窗口作为我可以与之交互的对象。
Sub getIE()
Dim sh As Object, oWin As Object, IE As Object
Set sh = CreateObject("Shell.Application")
For Each oWin In sh.Windows
If TypeName(oWin.document) = "HTMLDocument" Then
Set IE = oWin
Exit For
End If
Next
MsgBox IE.document.URL
End Sub
出现消息框并显示初始IE窗口的URL,但我不知道如何让它选择我通常用于实际获取成员信息的IE窗口。
几年前,当我在学校时,我参加了几个技术课程,但是因为我已经屈服了任何技术肌肉,所以已经有一段时间了。任何帮助将不胜感激!答案 0 :(得分:13)
这是我使用的。它计算IE的打开实例的数量,然后逐步执行每个实例并确定网页的URL和标题。然后,您可以将标题或网址与您要查找的标题或网址进行比较。以下示例使用“赞”功能比较标题,但就像我说的,如果您愿意,可以比较网址。此外,如果您正在寻找不会改变的标题或网址,您可以使用“=”而不是“赞”。
marker = 0
Set objShell = CreateObject("Shell.Application")
IE_count = objShell.Windows.Count
For x = 0 To (IE_count - 1)
On Error Resume Next ' sometimes more web pages are counted than are open
my_url = objShell.Windows(x).Document.Location
my_title = objShell.Windows(x).Document.Title
If my_title Like "XYZ" & "*" Then 'compare to find if the desired web page is already open
Set ie = objShell.Windows(x)
marker = 1
Exit For
Else
End If
Next
If marker = 0 then
msgbox("A matching webpage was NOT found")
Else
msgbox("A matching webpage was found")
End If
答案 1 :(得分:2)
以上代码对我来说效果很好。我把它变成了一个函数调用,如下所示
Set ieFindUser = FindIEObject("Find and List Users") 'Find handle for popup window.
功能
Public Function FindIEObject(target As String) As InternetExplorerMedium
Set objShell = CreateObject("Shell.Application")
IE_count = objShell.Windows.Count
For x = 0 To (IE_count - 1)
On Error Resume Next ' sometimes more web pages are counted than are open
my_url = objShell.Windows(x).Document.Location
my_title = objShell.Windows(x).Document.Title
If my_title = target Then 'compare to find if the desired web page is already open
Set FindIEObject = objShell.Windows(x)
Exit For
End If
Next
End Function