Я использую VBA, чтобы позволить Excel перемещаться по некоторым веб-страницам и извлекать из них данные. На одной странице мне нужно изменить, какая из двух переключателей проверена перед продолжением. К сожалению, отдельные переключатели в группе не имеют указанных идентификаторов. Есть ли указатель, назначенный переключателям по умолчанию, который я могу использовать, чтобы определить, какой из них я хочу проверить? Как это сделать в VBA?
Вот исходный код с веб-страницы. Сначала проверяется первый переключатель. Я хочу изменить вторую, чтобы проверить, прежде чем нажать кнопку sbmSearch.
<table class="Searchstyle">
<tr>
<td>Search by
<input type="radio" name="rdoSearchBy" value="Report" checked> Report No or
</td>
<td>
<input type="radio" name="rdoSearchBy" value="Author"> Author
</td>
<td>
<input type="submit" name="sbmSearch" value="Search">
</td>
</tr>
</table>
Вот мой код VBA:
With oIE ' my InternetExplorer object
.
.
With .Document.all
'.rdoGiren.Author.Checked = True ' attempt 1 - error
.getElementsByName("rdoSearchBy")(1).Checked = True ' attempt 2 - error
.sbmSearch.Click ' Clicks the Search button
End With
Do While .Busy: DoEvents: Loop
Do While .ReadyState <> 4: DoEvents: Loop
.
.
End With
Я полагаю, что должен быть способ сделать это, я просто не нахожу ответа.
Вы пробовали видеть, поддерживает ли VBA что-то вроде этого?
With .Document.all
.getElementsByClassName("Searchstyle")(0)(1)(0).Checked = True ' attempt 2 - error
.sbmSearch.Click ' Clicks the Search button
Таким образом, вы просто прокладываете себе путь по элементам для детей из таблицы.