2
我對VBA和HTML相當陌生。我正在寫一個VBA宏,在填寫一個Web表單之前瀏覽一個網站。使用值而不是索引從HTML下拉菜單中選擇VBA代碼
在導航期間,腳本需要從下拉菜單中選擇一個選項。我目前使用下面的(毫無疑問可怕,但功能)代碼,找到正確的下拉菜單索引2
Set dropOptions = HTMLDoc.getElementsByTagName("select")
For Each op In dropOptions
If op.getAttribute("name") = "tilastojakso" Then
op.Focus
op.selectedIndex = 2
Exit For
End If
Next op
選擇選項之前,這裏是HTML相關的下拉列表中:
<tr>
<td>Statistical period</td>
<td colspan="2"><select name="tilastojakso" >
<option value="2016-07">2016-07 (deadline 12.08.2016)</option>
<option value="2016-06">2016-06 (deadline 14.07.2016)</option>
<option value="2016-05">2016-05 (deadline 14.06.2016)</option>
<option value="2016-04">2016-04 (deadline 16.05.2016)</option>
<option value="2016-03">2016-03 (deadline 14.04.2016)</option>
<option value="2016-02">2016-02 (deadline 14.03.2016)</option>
<option value="2016-01">2016-01 (deadline 12.02.2016)</option>
<option value="2015-12">2015-12 (deadline 18.01.2016)</option>
<option value="2015-11">2015-11 (deadline 14.12.2015)</option>
<option value="2015-10">2015-10 (deadline 13.11.2015)</option>
<option value="2015-09">2015-09 (deadline 14.10.2015)</option>
<option value="2015-08">2015-08 (deadline 14.09.2015)</option>
<option value="2015-07">2015-07 (deadline 14.08.2015)</option>
<option value="2015-06">2015-06 (deadline 14.07.2015)</option>
<option value="2015-05">2015-05 (deadline 12.06.2015)</option>
<option value="2015-04">2015-04 (deadline 18.05.2015)</option>
<option value="2015-03">2015-03 (deadline 16.04.2015)</option>
</select></td>
ŧ他的問題:
我想根據選項值而不是索引從下拉列表中進行選擇。假設我有一個名爲「period」的變量,其中包含字符串「2016-04」。我希望腳本選擇一個與「period」中存儲的字符串相匹配的值。我花了幾個小時搜索這個網站和其他地方,但一直沒能找到我能理解的答案。
在此先感謝!
變化'op.Focus op.selectedIndex = 2'到'op.Value = period' – Jordan
感謝喬丹,這個工程和是最優雅的解決方案! – Aaron
對速度和代碼的另一個思考是,你可能只需選擇元素的名稱即可,然後設置它的值。例如HTMLDoc.getElementsByName(「tilastojakso」)(0).value =句點。我會檢查以確保元素是一個對象,以防它在頁面上不存在。 –