【问题标题】:Control Internet Explorer from VBA从 VBA 控制 Internet Explorer
【发布时间】:2018-11-19 09:51:45
【问题描述】:

我创建了一个宏/用户窗体,它创建一个 html 文件并希望 Internet Explorer 11 显示该页面。
当您使用用户表单时,您会创建应在页面上显示的新数据。如何在 IE11 上刷新页面?

我尝试使用元刷新,但如果用户窗体在 IE 刷新时写入页面,页面会变为空白并停止刷新。

我尝试的另一种方法是 sendkeys,但它似乎不起作用。

AppActivate "The page - Internet Explorer"
SendKeys "{F5}", True

什么都没有发生。

是否有任何其他选项可以确保页面刷新并始终可见? (意思是用户表单正在使用文件时不刷新)

【问题讨论】:

    标签: vba refresh internet-explorer-11


    【解决方案1】:

    如果页面已经打开,那么您需要找到该特定页面,然后您可以尝试刷新它。您可以尝试按标题查找页面。

    请参阅下面的示例代码。

    Sub demo1()
    flag = 0
    Set objShell = CreateObject("Shell.Application")
    IE_count = objShell.Windows.Count
    For x = 0 To (IE_count - 1)
        On Error Resume Next
        my_url = objShell.Windows(x).Document.Location
        my_title = objShell.Windows(x).Document.Title
    
        If my_title Like "Microsoft" & "*" Then
            Set ie = objShell.Windows(x)
            ie.Refresh
            flag = 1
            Exit For
        Else
        End If
    Next
    
    If flag = 0 Then
        Debug.Print ("A matching webpage was NOT found")
    Else
        Debug.Print ("A matching webpage was found")
    End If
    End Sub

    尝试修改代码中的标题以匹配您的网页。

    【讨论】:

    • 感谢您的建议。但是这段代码只创建一个新窗口,它不控制一个已经打开的窗口。我的代码在文本文件中创建/更改 html,浏览器需要将其显示在用户无法查看的屏幕上。这就是为什么我不想要新窗口或元刷新,因为它可能会卡在中间。
    • @Andreas,请检查修改后的答案可能会帮助您解决问题。
    • 这看起来很有趣!我很快就会看看。我需要更改If my_title Like "Microsoft" & "*" Then 以使其找到正确的寡妇吗?如果页面标题为my page,则* 应替换为my page
    • * 用于通配符。您可以在“Microsoft”的位置添加标题。保留 * 原样。请注意,它区分大小写。
    • 搞定了!我需要按预期更改线路。但是给If my_title Like "My page" & "*" Then
    猜你喜欢
    • 2018-06-04
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多