2013-05-02 3 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 и т. Д.) Нецелесообразен. Таким образом, я ищу способ выбрать запись из раскрывающегося списка (например, «new2»), отправив текстовое имя записи (например, «new2») в VBA.

Есть ли у кого-нибудь способ для этого?

+0

Можете ли вы прочитать (в VBA) текст и значения для этих параметров? Если это так, если ничего не работает, вы всегда можете хранить их в массиве или скриптовом словаре для поиска. –

+0

Вы говорите, итерации по всему выпадающему списку и вытащите все значения? Я не знаком с тем, как вытащить текст и значения из раскрывающегося списка обратно в Excel, но это может быть жизнеспособным подходом. – user2344525

+0

Я не уверен, что это можно сделать - я не очень сильно разбираюсь в автоматизации Excel/IE, но если нет четкого способа получить параметры по имени (например, quivalent to GetElementByName), тогда я попытаюсь найти способ перебора вариантов. Просто предложение, а не «ответ» как таковое, но подумал, что я дам вам что-то попробовать хотя бы :) –

ответ

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

Да, эта методология работает на Сантоше. Спасибо! – user2344525

+0

Я немного изменил код Сантоша. Вместо установки selectedIndex = x я устанавливаю его равным drp.Options (x) .Value. Во многих случаях x будет эквивалентен drp.Options (x) .Value. Однако в моем конкретном случае это не так. – user2344525

Смежные вопросы