【问题标题】:Excel ie_NavigateComplete2 is not called if site is in local or trusted sites如果站点位于本地站点或受信任站点中,则不会调用 Excel ie_NavigateComplete2
【发布时间】:2020-04-09 20:48:20
【问题描述】:

我正在尝试在 Excel VBA 中处理导航完成事件 (ie_NavigateComplete2),当网站不在本地 Intranet 或 IE 安全设​​置的受信任站点中时调用它,但不是其他情况。

代码如下:

Option Explicit

Dim WithEvents ie As InternetExplorer
Sub start_here()
  Set ie = New InternetExplorer
  ie.Visible = True
  ie.Navigate "https://www.example.com"
  While ie.busy
     DoEvents
  Wend
End Sub

Private Sub ie_NavigateComplete2(ByVal pDisp As Object, url As Variant)
    ' this is not called if "https://www.example.com" is in trusted or local sites in IE security setting
    MsgBox "navigatecomplete2"
End Sub

如何规避这个问题?

【问题讨论】:

    标签: excel vba security internet-explorer


    【解决方案1】:

    当网站位于本地 Intranet 时,我重现了该问题。但是当网站位于受信任的站点中时,它运行良好。我搜索了这个问题,但没有找到发生这种情况的原因。

    您可以使用DocumentComplete Event 作为解决方法。它在文档完全加载和初始化时触发。它可以通过本地 Intranet 和受信任的站点触发:

    Private Sub ie_DocumentComplete(ByVal pDisp As Object, URL As Variant)
        MsgBox "documentcomplete"
    End Sub
    

    【讨论】:

    • ie_DocumentComplete 当站点在本地 Intranet 时不会被调用 :(
    • 我发现ie_DocumentComplete 在未选中启用保护模式 时不会被触发。请确认Enable Protected Mode is checked并重启​​IE再试一次。
    • 无法要求客户更改其 IE 设置,在 Excel VBA 中查找内容
    • 那我想你只能用其他方法来达到目的了。在页面完全加载后执行一些事件。您可以将要执行的事件放在While ie.busy DoEvents Wend 之后。你也可以参考this threadthis thread
    猜你喜欢
    • 2018-12-22
    • 2020-07-03
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多