首页 > 解决方案 > VBA:当ID和Classname随机更改时,访问加载了angularjs的div内的元素

问题描述

我是 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 或类名来操作表。或其他可以帮助我管理桌子的方法。对不起,我的英语太差了。希望你能理解我:)

标签: htmlexcelvbaweb-scraping

解决方案


^您可以使用以 ( ) 运算符开头的属性 = 值选择器

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

我不确定您是否需要单个或多个匹配项

单场比赛

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

这假设 id 以开头1554799061475-1-uiGrid-并且只有结束位更改。

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


推荐阅读