【问题标题】:javascript not working wen invoking IE using VBAjavascript 无法使用 VBA 调用 IE
【发布时间】:2013-12-12 10:13:28
【问题描述】:

我正在尝试以编程方式通过 VBA 单击下拉选项列表。但是该选项的选择有效,但与点击关联的 javascript 不起作用。
我尝试了这两个选项 - .click 和 .focus。 但是这两个都不会调用关联的javascript。 见下方代码

Set ElementCol = appIE.Document.getElementsByTagName("option")

For Each obj In ElementCol
    If obj.innerHTML = "abc" Then
     obj.Selected = True
      obj.Focus
      obj.click
    Exit For
 End If
Next obj

在 IE 中,

<select>
  <option value="abc">abc </option>
  <option value="def">def</option>
</select>

提前感谢您的帮助!

问候,
塞缪尔·马修斯

【问题讨论】:

  • "但是选项的选择有效,但与点击相关的 javascript 不起作用。" 我没有看到任何 Javascript?在 DOM Ready 上使用 Javascript 或 jQuery 执行此操作,只需一行代码,比在 VBA 中执行此操作更直接/更快。我真的看不出这样做的目的。
  • 嗯.. 我不是在开发网站.. 只是试图通过 VBA 自动提交手动表单。 javascript 代码没有给出,因为我不能,因为它违反了政策。它在

标签: internet-explorer vba click option


【解决方案1】:

这个怎么样:

Sub DOM_SetSelect()

Dim oIE         As Object
Dim oBody       As Variant
Dim oSelect     As Variant

Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = True
oIE.Navigate ("http://www.tizag.com/htmlT/htmlselect.php")
While oIE.ReadyState <> 4
    DoEvents
Wend

Set oBody = oIE.Document.body
Set oSelect = oBody.GetElementsByTagName("select")(0)
oSelect.selectedindex = 2

End Sub

如果要按值设置,则使用

oSelect.value = "CA" 'in the demo website that I've added 

【讨论】:

  • 非常感谢...@kim 和 santhosh...我会检查并让您知道...再次感谢!
  • @kim.. 刚接触 vba 有疑问.. 我们只是通过标签/值获取元素。但我们没有正确调用点击事件..你能帮我吗? (我刚刚尝试了这段代码,没有看到任何变化)
  • 发生的情况是您直接在 DOM 中查找并更改元素的值,而不是触发一段 Javascript(单击事件)来为您处理。如果您没有看到更改,则可能您没有更改正确的值;只需在页面上单击鼠标右键并查看源 HTML。
【解决方案2】:

FireEvent 用于触发附加到任何元素的 javascript 事件。

试试这个

obj.FireEvent("onclick")

你甚至可以试试这个

obj.execScript "onclick()", "JavaScript"

【讨论】:

  • @kim gysen 我试过你的回答。代码调用 javascript onchange 事件...但是我用它显示错误:(请指导我..提前谢谢!
  • @SamuelMathews 可以发下obj的实际viewsource吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 2013-01-30
相关资源
最近更新 更多