VBA代码与已经打开的特定IE窗口进行交互

use*_*528 5 excel internet-explorer vba excel-vba

我无法找到如何让excel VBA与已经打开的特定IE窗口进行交互.

在这里我的过程:

我打开IE浏览器,导航到网站,输入我的用户名和密码,点击登录.打开一个新的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
Run Code Online (Sandbox Code Playgroud)

出现消息框并显示初始IE窗口的URL,但我不知道如何让它选择我通常用于实际获取成员信息的IE窗口.

几年前,当我在学校时,我参加了几个技术课程,但已经有一段时间了,因为我已经弯曲了任何技术肌肉.任何帮助将不胜感激!

ron*_*ron 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
Run Code Online (Sandbox Code Playgroud)