繁体   English   中英

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

[英]VBA code to interact with specific IE window that is already open

我无法找到如何让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

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

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

这是我使用的。 它计算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

上面的代码对我很有用。 我把它变成了一个函数调用,如下所示

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM