【问题标题】:Excel VBA to dojo - changing a drop down boxExcel VBA to dojo - 更改下拉框
【发布时间】:2018-07-19 02:08:22
【问题描述】:

我是新来的,我正在尝试编写一个 VBA Excel 脚本来自动化外部网站的表单输入。该网站使用dojo,我使用的是IE11。有没有办法让我将 excel vba 集成到 dojo?

我在使用 select 元素的 selectedIndex 属性将状态下拉框更改为我想要的状态时遇到了很多麻烦。我还尝试了 execScript 来尝试使用 Javascript 来调用 dojo 函数。我能够更改输入字段(键入字段)。我已经在整个论坛中寻找答案,但没有任何效果。任何人都可以帮忙吗?

我尝试过的代码

IE.document.currentWindow.execScript code:="dijit.getID('state').set('value','TEXAS');" //returns 80020101 error

IE.document.currentWindow.execScript code:="dojo.eval(dijit.getID('state').set('value','TEXAS'));" //returns 80020101 error

IE.document.getElementById("state").Focus
IE.document.getElementById("state").value = "NEW YORK"
IE.document.getElementById("state").FireEvent ("onchange")

IE.document.getElementById("state").Focus
IE.document.getElementById("state").selectedIndex = 29
IE.document.getElementById("state").FireEvent ("onchange")

来自网站

<div>
<label for="state" id="state_label" class="showHints">State for withholding</label>
<div><select id="state" name="state" data-dojo-type="dijit.form.FilteringSelect"><option value="ALABAMA">Alabama</option>      <option value="ALASKA">Alaska</option><option value="ARIZONA" selected="selected">Arizona</option><option value="ARKANSAS">Arkansas</option><option value="CALIFORNIA">California</option><option value="COLORADO">Colorado</option><option value="CONNECTICUT">Connecticut</option><option value="DELAWARE">Delaware</option><option value="FLORIDA">Florida</option><option value="GEORGIA">Georgia</option><option value="HAWAII">Hawaii</option><option value="IDAHO">Idaho</option><option value="ILLINOIS">Illinois</option><option value="INDIANA">Indiana</option><option value="IOWA">Iowa</option><option value="KANSAS">Kansas</option><option value="KENTUCKY">Kentucky</option><option value="LOUISIANA">Louisiana</option><option value="MAINE">Maine</option><option value="MARYLAND">Maryland</option><option value="MASSACHUSETTS">Massachusetts</option><option value="MICHIGAN">Michigan</option><option value="MINNESOTA">Minnesota</option><option value="MISSISSIPPI">Mississippi</option><option value="MISSOURI">Missouri</option><option value="MONTANA">Montana</option><option value="NEBRASKA">Nebraska</option><option value="NEVADA">Nevada</option><option value="NEW_HAMPSHIRE">New Hampshire</option><option value="NEW_JERSEY">New Jersey</option><option value="NEW_MEXICO">New Mexico</option><option value="NEW_YORK">New York</option><option value="NORTH_CAROLINA">North Carolina</option><option value="NORTH_DAKOTA">North Dakota</option><option value="OHIO">Ohio</option><option value="OKLAHOMA">Oklahoma</option><option value="ORGEON">Oregon</option><option value="PENNSYLVANIA">Pennsylvania</option><option value="RHODE_ISLAND">Rhode Island</option><option value="SOUTH_CAROLINA">South Carolina</option><option value="SOUTH_DAKOTA">South Dakota</option><option value="TENNESSEE">Tennessee</option><option value="TEXAS">Texas</option><option value="UTAH">Utah</option><option value="VERMONT">Vermont</option><option value="VIRGINIA">Virginia</option><option value="WASHINGTON">Washington</option><option value="WEST_VIRGINIA">West Virginia</option><option value="WISCONSIN">Wisconsin</option><option value="WYOMING">Wyoming</option><option value="WASHINGTON_DC">Washington DC</option><option value="PUERTO_RICO">Puerto Rico</option><option value="AMERICAN_SAMOA">American Samoa</option><option value="GUAM">Guam</option><option value="NORTHERN_MARIANA_ISLANDS">N. Mariana Islands</option><option value="US_VIRGIN_ISLANDS">US Virgin Islands</option></select></div>

【问题讨论】:

  • 组合值是否改变?
  • 当我尝试使用 .value 属性时,值会发生变化。但是当我提交通过的表单值仍然是第一个不正确的选项。当我使用 selectedindex 属性时,我得到“对象不支持此属性或方法”错误。
  • 我看看,你能提供网址吗?

标签: javascript excel vba dojo internet-explorer-11


【解决方案1】:

这应该会有所帮助,选定索引的数值。抱歉,我应该发现了这一点,我的一天结束了:)

Sub x()

Dim i As SHDocVw.InternetExplorer
Dim s As MSHTML.HTMLSelectElement
Dim e As MSHTML.IHTMLElement

Set i = New SHDocVw.InternetExplorer
i.Visible = 1
i.navigate "http://www.paycheckcity.com/calculator/salary/"

While i.Busy Or i.readyState <> READYSTATE_COMPLETE
    DoEvents
Wend

Set s = i.document.getElementById("state")
s.selectedIndex = 11

While i.Busy Or i.readyState <> READYSTATE_COMPLETE
    DoEvents
Wend

s.form.submit

End Sub

【讨论】:

  • 感谢您的帮助,但我仍然收到“对象不支持此属性或方法”错误。我正在使用IE11,这会影响什么吗?此外,当我测试 i.document.getElementById("state").tagName 时,它​​会将其返回为“INPUT”而不是“SELECT”。我不知道为什么,但这就是 selectedIndex 不起作用的原因吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 2016-05-19
  • 2022-06-22
相关资源
最近更新 更多