首页 > 解决方案 > 从 Excel VBA 调用 JavaScript oncontextmenu

问题描述

我正在尝试调用 Intranet 上可用网页上的右键菜单。我正在从 Excel 宏中执行此操作。此菜单仅在用户右键单击特定表中的元素时可用。单击时会显示一个带有四个选项的框。我需要执行与该菜单中的第四个选项相关的操作。

我在该宏中有以下活动引用:VBA、MS Excel 16.0、MS Office 16.0、MS Internet Controls、Ms HTML Object Library、Ms Forms 2.0、UiAutomationClient

我已经设置了对以下 HTML 标记的有效引用(都经过测试并且 100% 准确):

  1. 框架
  2. 身体
  3. table(class "tabela1_small") - 我引用了包含需要右键单击的数据的行
  4. div (id="pop")
  5. 跨度 (Pokaż kalkulację )

我试图自动化的页面的一段 HTML 代码

    Dim IE As InternetExplorer
    Dim Document As HTMLDocument
    Dim e As IHTMLElement
    Dim f As IHTMLElement
    Dim elements2 As IHTMLElementCollection
    Dim html_span As HTMLSpanElement
    Dim html_input As HTMLInputElement
    Dim html_body As HTMLBody



    Set iframeDoc = IE.Document.frames("list").Document
    Set html_input = iframeDoc.getElementsByName("akcja")(0) 'html_input = <INPUT id=akcja type=hidden value="pokaż kalkulację " name=akcja>
    html_input.Value = "pokaż kalkulację "


    'manipulating input field
    hWnd = IE.hWnd
    SetForegroundWindow hWnd
    SendKeys "~"
    html_input.Click
    html_input.FireEvent ("oncontextmenu")
    html_input.FireEvent ("onmouseover")  

    Set html_body = iframeDoc.getElementsByTagName("body").Item(0) ' <body oncontextmenu="javascript: CoM(); return false;">

    Call IE.Document.parentWindow.execScript("parent.pokaz_kalkul(dowod.numer)", "JavaScript") 'f na objIE.Document


    'manipulate span/div elements
    Set e = iframeDoc.getElementById("dowod") ' e = <DIV id=dowod>
    Set elements2 = e.getElementsByTagName("div")
    Set f = elements2.Item(3) ' f= <SPAN onclick="javascript: parent.pokaz_kalkul(dowod.numer)">Pokaż kalkulację </SPAN>

( e.单击 f.单击

不幸的是,火灾事件调用都不起作用(没有错误,但没有任何反应)。execScript 命令导致运行时错误 -2147352319 (80020101)。

有没有办法模拟对表格元素、div 或 span 的右键单击?或者可以直接调用这个javascript parent.pokaz_kalkul(dowod.numer) 而无需点击任何东西?

标签: javascripthtmlexcelvbaweb-scraping

解决方案


推荐阅读