【问题标题】:Switching Internet Explorer Windows with VBA使用 VBA 切换 Internet Explorer Windows
【发布时间】:2012-12-10 15:19:05
【问题描述】:

我一直在使用 Excel 宏来自动化工作中的 Internet Explorer 进程。我非常接近弄清楚所有内容,但最后,宏单击“下载报告”按钮,该按钮会启动一个新窗口。我需要在这个新窗口上启动一些事情,但我不知道如何将宏的焦点更改为新窗口。我在网上找到了一些东西,但都没有成功。我知道有一些方法可以通过告诉 Excel 查找浏览器窗口的名称并激活它来在浏览器窗口之间切换,但是新窗口的部分名称不断变化(它是该特定窗口的唯一 URL) .

我想知道是否有办法让宏只查找窗口的前九个字母并切换到该窗口?类似于excel中的LEFT函数?原因是 URL 的前 9 个字符永远不会改变。原始窗口的名称(我试图切换的那个)永远不会改变,所以也许我可以告诉 Excel 查找未命名为原始窗口的浏览器窗口?还是有其他想法?

提前感谢您的帮助

【问题讨论】:

  • 您也可以在VBA 中使用LEFT。请提供您的代码副本,以便我们了解您的最新情况。
  • 如果你创建一个InternetExplorer对象,你可以直接控制网络浏览器。

标签: windows internet-explorer excel automation vba


【解决方案1】:

您正在寻找 VBA AppActivate 命令吗?

【讨论】:

    【解决方案2】:

    您需要添加对 Internet 控件和 shell 的引用。您只需要循环浏览 IE 窗口并查看 url 的左侧。见下文

    Function GetInternetWindow(urlToLookFor as String) As InternetExplorer
    
    Dim winShell As Shell
    Dim ie As InternetExplorer
    
    Set winShell = New Shell
    'loop through the windows and look at the urls
    For Each ie In winShell.Windows
        If Left(ie.LocationURL, 9) = urlToLookFor Then        
            GetInternetWindow = ie
            Exit For
        End If
    Next
    End Function
    

    【讨论】:

    • 这可能是一个非常愚蠢的问题,但我是 VBA 新手。如果我想将此函数包含在我的其他宏进程中,我该怎么做?我是否将函数放在我的其他代码下方,然后调用它?
    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2020-03-18
    • 1970-01-01
    相关资源
    最近更新 更多