VBA: доступ к элементу внутри div, загруженного angularjs, когда идентификатор и имя класса изменяются случайным образом - PullRequest
1 голос
/ 07 мая 2019

Я новичок в VBA и создаю приложение, которое заполняет данные, поступающие со страницы xls на веб-сайт, который использует angularjs. веб-сайт содержит таблицу для заполнения, поэтому его идентификатор и имя класса изменяют четыре последних номера случайным образом при каждом обновлении. (например: источник кода ниже: 02XC ID будет изменен на что-то другое, но префикс останется прежним). как я могу манипулировать этой таблицей?

Исходный код сайта

<div tabindex="-1" class="ui-grid-cell ng-scope ui-grid-coluiGrid-02XC cell editable" id="1554799061475-1-uiGrid-02XC-cell" role="gridcell" aria-selected="false" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.uid" ui-grid-cell="" ui-grid-one-bind-id-grid="rowRenderIndex + '-' + col.uid + '-cell'">[Here is the web table that i want to upload values][1]</div>

мой код

Set objHtml = New HTMLDocument
Set objHtml = internetExplorer.document

Set modric = objHtml.getElementsByClassName("ui-grid-cell ng-scope ui-grid-coluiGrid-02XC cell editable")
If modric.Length <> 0 Then
 For q = 0 To modric.Length - 1
      modric(q).Click
      modric(q).innerText = Workbooks("remplir").Worksheets("sheet1").Range("F1").Offset(n + 1, 0).Value
Next q
End If

как я уже сказал, в следующем обновлении 02XC изменится на четыре других случайных числа. Я хочу получить идентификатор или имя класса для каждого обновления, чтобы манипулировать таблицей. или любые другие способы, которые могли бы помочь мне управлять столом. извините, мой английский такой плохой. надеюсь, вы понимаете меня :)

1 Ответ

0 голосов
/ 07 мая 2019

Вы можете использовать атрибут = значение селектора с запуском с оператором (^)

[id^='1554799061475-1-uiGrid-']

Я не уверен, хотите ли вы одно или несколько совпадений

одиночное совпадение

Dim ele As Object
Set ele = objHtml.querySelector("[id^='1554799061475-1-uiGrid-']")

Предполагается, что идентификатор начинается с 1554799061475-1-uiGrid- и изменяется только конечный бит.

Вы можете использовать querySelectorAll, чтобы вернуть нодлист, если возможно более одного совпадения.

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