Автоматизация Excel-IE с VBA на динамических таблицах - PullRequest
0 голосов
/ 11 сентября 2018

Доброе утро,

Я надеюсь, что какая-то добрая душа сможет помочь мне с контрольно-пропускным пунктом, с которым я столкнулся в своем стремлении манипулировать сайтом с помощью VBA.Я использую MS Excel 2010 и Internet Explorer 11.0.56.

Я немного знаком с VBA, но никогда не использовал его для перехода на веб-сайт, ввода информации и нажатия кнопок.Мне удалось разобраться в следующем:

В столбце A моей электронной таблицы Excel есть список из десятизначных чисел регистра.

Приведенный ниже код откроет IE, перейдите кнужный веб-сайт, сделайте паузу, пока я вхожу в систему, затем перейдите к экрану поиска, введите первый номер дела и нажмите кнопку ПОИСК (да, в этом примере номер дела жестко запрограммирован без зацикливания, но я могу это сделатьобработайте, пожалуйста, игнорируйте):

Sub Button_Click()
Dim objIE As Object
Set objIE = New InternetExplorerMedium
objIE.Top = 0
objIE.Left = 0
objIE.Width = 800
objIE.Height = 600
objIE.AddressBar = 0
objIE.StatusBar = 0
objIE.Toolbar = 0
objIE.Visible = True
objIE.Navigate ("https://somewebsite.com")
MsgBox ("Please log in and then press OK")
objIE.Navigate ("https://somewebsite.com/docs")
Do
DoEvents
Loop Until objIE.ReadyState = 4
objIE.Document.all("caseNumber").Value = "1234567890"
objIE.Document.getElementById("SearchButton").Click
Exit Sub
Do
DoEvents
Loop Until objIE.ReadyState = 4
MsgBox ("Done")
End Sub

Это приведет меня к этому экрану

Номер файла, введенный в поле поиска, вернет любое количество файлов вдинамическая таблица с флажком слева от каждого файла.

Для этого примера, скажем, меня интересует ТОЛЬКО файл с именем «CC8» в столбце «Тип».Для данного номера файла будет только один экземпляр «CC8».

Мне нужна помощь в том, как с помощью VBA найти в этой таблице поиск строки «CC8», а затемфлажок слева установлен автоматически?

Когда я проверяю элемент «CC8» в IE, это HTML-код, связанный с ним (выделен серым цветом; вся таблица находится в классе «listf-list clearfix»)”)

см. Здесь

Ниже приведен HTML-код для флажка, связанного с элементом« CC8 »:

HTML-код здесь

«id» для обоих имеет одинаковую последовательность чисел, но один начинается с «viewPages», а другой «doc».

Может кто-нибудь помочь мне с тем, что янужно добавить в мой код, чтобы установить этот флажок?Спасибо!

1 Ответ

0 голосов
/ 11 сентября 2018

Примечание:

Пожалуйста, опубликуйте фактический HTML-код, используя инструмент фрагмента.


Как правило:

Без надлежащего тестирования HTML, я предполагаю, что следующие 2 nodeLists имеют одинаковую длину, а это означает, что когда текст поиска находится в aNodeList, то можно предположить, что такой же индекс можно использовать для нацеливания на соответствующий флажок вbNodeList:

Dim aNodeList As Object, i As Long
With objIE.document
    Set aNodeList = .querySelectorAll("a[target='_blank']")
    Set bNodeList = .querySelectorAll("[title='Search Result: Checkbox']")
End With

For i = 0 To aNodeList.Length - 1
    If aNodeList.item(i).innerText = "CC8" Then
        bNodeList.item(i).Click
        Exit For
    End If
Next

Вы также можете использовать вместо этого следующее, поскольку вы говорите, viewPages префикс каждого элемента:

Set aNodeList = .querySelectorAll("a[id^='viewPages']")

Другие наблюдения:

Традиционные флажки будут иметь атрибут checked и синтаксис bNodeList.item(i).Checked = True, но, поскольку я не вижу этого атрибута в вашем элементе, я предполагаю, что .Click достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...