VBA:当ID和Classname随机更改时,在加载了angularjs的div中访问元素

时间:2019-05-07 10:11:28

标签: html excel vba web-scraping

我是VBA的初学者,我制作了一个应用程序,该应用程序将来自xls页面的数据填充到使用angularjs的网站。 该网站包含一个要填写的表格,因此其ID和类名在每次刷新时都会随机更改四个​​最新数字。 (例如:以下代码源:ID的02XC将更改为其他名称,但前缀将保持不变)。我该如何操作这张桌子?

代码源网站

<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将更改为其他四个随机数。 我想获取每次刷新的ID或类名,以操作该表。 或其他可以帮助我管理表格的方式。 对不起,我的英语太差了。希望你能理解我:)

1 个答案:

答案 0 :(得分:0)

您可以使用以{^)运算符开头的attribute =值选择器

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

我不确定您是否要进行一次或多次比赛

单场比赛

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

这假定id以1554799061475-1-uiGrid-开头,并且只有结束位发生变化。

如果可能有多个匹配项,则可以使用querySelectorAll返回一个nodeList。