【问题标题】:VBA: Access element inside a div loaded with angularjs, when ID and Classname changes randomlyVBA:当ID和Classname随机更改时,访问加载了angularjs的div内的元素
【发布时间】:2019-09-24 23:31:47
【问题描述】:

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

【问题讨论】:

    标签: html excel vba web-scraping


    【解决方案1】:

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

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

    我不确定你想要一个还是多个匹配

    单场比赛

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

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

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

    【讨论】:

    • 您好@QHarr 感谢您的回答。它让我提前出价。问题是,我要填写 28 个表,每个表都有相同的前缀 ID。如果我使用查询选择器,VBA 不会我正在调用哪个表并且我的程序冻结了。是否有代码可以帮助我在每次刷新时获取表的 ID,以便我接下来可以使用它???
    • 您应该可以按索引访问。 Queryselectorall 返回一个节点列表,因此 item(0) 将是第一个等。它们与您的表匹配还是您只对某些表感兴趣?
    • 我对某些表感兴趣。请把代码写下来。
    • 我需要看起来更多的 html。我不完全明白你在问什么。如果您不知道 id 但想提取某些表的 id,您将需要一种不同的方式来选择表,然后提取 id。您显示的 html 用于 div 元素,而不是表格。
    • 嘿! @QHarr,感谢您的帮助。它真的不是表,而是 div。实际上,“div”对应于月份中的几天,并且对于每一天,我都必须记录一个值。但也有一些日子我无法保存价值。特别是前六个表。我开始在第七个“div”中记录我的价值观。我想上传图片,我不能在这里。请检查developpez.net/forums/d1961441/logiciels/microsoft-office/excel/… 以查看我要记录值的地方的外观。我在另一个论坛上问了这个问题
    猜你喜欢
    • 2016-10-03
    • 2021-06-02
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    相关资源
    最近更新 更多