2013-05-02 109 views
0

我想寫一個Excel VBA腳本導航到一個網站,並從下拉列表中選擇使用列表項中的文本,而不是索引的值。通過檢查HTML代碼,我可以看到下拉列表中的值似乎是沒有可識別模式的整數,並且似乎與下拉列表中條目顯示的文本不相關。通過文本選擇下拉列表不值價值

<option value="246">new2</option> 
<option value="245">new</option> 
<option value="196">test</option> 

我可以成功地使用下面的命令:

ieDoc.getElementById("viewMaintainFixedCombustible_fixedCombustible_fireZoneId").Value = 246 

要選擇下拉列表中的項目「NEW2」,通過發送值246或者,我可以把245選擇「新」。但是,列表中的元素總是在變化,所以按值(246,245等)選擇是不切實際的。因此,我正在尋找一種方法,通過在VBA中發送條目的文本名稱(例如「new2」)來從下拉列表中選擇一個條目(例如「new2」)。

有沒有人有如何做到這一點的方法?

+0

您能夠讀取(在VBA中)這兩個選項的文本和值嗎?如果是這樣,如果沒有其他工作,您可以將它們存儲在數組或腳本字典中以進行查找。 – 2013-05-02 20:01:33

+0

你是說遍歷整個下拉列表並提取所有值?我不熟悉如何將文本和數值從下拉菜單拖回到Excel中,但這可能是一種可行的方法。 – user2344525 2013-05-02 20:29:43

+0

我不確定是否可以完成 - 我不會做很多Excel/IE自動化,但是如果沒有明確的方法來按名稱獲取選項(例如,與GetElementByName相同,那麼我會盡力找到一種方法來迭代這些選項,只是一個建議,本身並不是一個「答案」,但我認爲我會給你一些東西來嘗試至少:) – 2013-05-02 20:36:11

回答

0

請嘗試下面的示例代碼,通過文本設置下拉列表。

Set drp =ieDoc.getElementById("<id of your dropdown>") 
    For x = 0 To drp.Options.Length - 1 
     If drp.Options(x).Text = "new2" Then 
      drp.selectedIndex = x 
      Exit For 
     End If 
    Next 
+0

是的,這種方法可以用於Santosh。謝謝! – user2344525 2013-05-03 19:59:35

+0

我稍微修改了Santosh的代碼。而不是設置selectedIndex = x,我將其設置爲等於drp.Options(x).Value。在很多情況下,x將相當於drp.Options(x).Value。但是,在我的具體情況下,他們不是。 – user2344525 2013-05-10 14:57:29