【问题标题】:Click HTML button that has ID and Onclick via VBA通过 VBA 单击具有 ID 和 Onclick 的 HTML 按钮
【发布时间】:2018-11-23 11:33:46
【问题描述】:

在此字段中输入数据后,我正在尝试单击按钮:

<input name="termoBuscaUsuarioAprovador" id="termoBuscaUsuarioAprovador" 
style="width: 240px;" onkeydown="javascript:var keyCode = event.keyCode ? 
event.keyCode : event.which ? event.which : event.charCode; if(keyCode == 13) { 
document.getElementById('buscaResponsavel').focus(); }" onkeypress="return 
desabilita(this, event);javascript:var keyCode = event.keyCode ? event.keyCode 
: event.which ? event.which : event.charCode; if(keyCode == 13) { document.getElementById('buscaResponsavel').focus(); }" type="text" value="">

我正在使用它,它似乎工作:

IE.Document.getElementById("termoBuscaUsuarioAprovador").Value = "xxxxxxx" 'Name

但是当我尝试点击下面的“搜索”按钮时,会出现一个简短的加载栏(就像我手动点击按钮一样),但它没有显示任何内容,它仍然保持空白。

<input name="buscaUsuarioAprovador" id="buscaResponsavel" style="width: 100px;" onclick="pesquisar_dadosUsuarioAprovador(document.getElementById('termoBuscaUsuarioAprovador').value)" type="button" value="Buscar">

我正在使用的使加载栏出现的代码是:

IE.Document.getElementById("buscaResponsavel").Click

我不知道我是否因为那个“onclick”而部分触发了按钮,或者它是否与输入字段有关。

谢谢!

【问题讨论】:

    标签: excel vba web button


    【解决方案1】:

    如果不浏览网页很难回答您的问题,但最常见的可能性是文本框值会触发某些功能来执行,因此您可以使用以下方法而不是仅仅将值传递给文本框 方法一:

      set Zip =  IE.Document.getElementById("termoBuscaUsuarioAprovador")
      Zip.Value = "XXXXX"   
      Dim event_onChange As Object
      Set event_onChange = ie_Doc.createEvent("HTMLEvents")
      event_onChange.initEvent "keypress", True, False
      Zip.dispatchEvent event_onChange
    

    如果“Keypress”不起作用,您可以将“Keypress”替换为“keydown”

    方法二:

       set Zip =  IE.Document.getElementById("termoBuscaUsuarioAprovador")
      Zip.Value = "XXXXX"
      Zip.FireEvent ("onkeypress")
    or
      Zip.FireEvent ("onblur")
    

    希望对你有帮助

    【讨论】:

    • 方法 1 给了我“ie_doc”的错误,所以我用 IE.Document 替换它。但是当我测试代码时,网站上什么也没发生。方法2 FireEvents都没有触发按钮。
    【解决方案2】:

    您是否尝试过 .FireEvent 来触发 onclick?

    IE.Document.getElementById("buscaResponsavel").FireEvent "onclick"
    

    也许是顺序:

    IE.Document.getElementById("buscaResponsavel").FireEvent "onkeypress"
    'Set value however you are.....
    IE.Document.getElementById("buscaResponsavel").FireEvent "onclick"
    

    【讨论】:

    • 忘了说,是的,我做到了,它和.click的效果一样(简短的加载栏,但结果是空白)
    • 您是否尝试触发其他 2 个事件?看起来需要 keydown 来启用焦点
    • 不走运。 keydown 是什么意思?
    • 元素的 html 中列出的其他事件
    • 哦,好的。但还没有结果。
    猜你喜欢
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 2020-07-14
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多