Excel VBA 到 select 网页上的导航选项卡

Excel VBA to select a navigation Tab on a Webpage

卡在网页的某个区域,似乎无法弄清楚如何 select 任何一个导航选项卡。 我已经完成了 ID、密码和其他几个屏幕的编码,才能进入这个屏幕。 尝试了几乎所有存在的“GetElementBy”组合(我认为)但无济于事。 据我所知,选项卡不在自己的框架中。 这是选项卡的 HTML 代码。 如果有人可以帮助快速 selecting 一个,我们将不胜感激。

<ul class="nav nav-tabs">
    <li ng-class="{active:isSet(1)}" class="active">
        <a href="" role="tab" data-toggle="tab" ng-click="setTab(1)">
            Prototypes
        </a>
    </li>
    <li ng-class="{active:isSet(2) || isSet(3)}">
        <a href="" role="tab" data-toggle="tab" ng-click="setTab(2);">
            Devices
        </a>
    </li>
    <li ng-class="{active:isSet(4)}" ng-show="!IsInitialRelease">
        <a href="" role="tab" data-toggle="tab" ng-click="setTab(4)">
            Notices
        </a>
    </li>
    <li ng-class="{active:isSet(9)}" ng-show="!IsInitialRelease">
        <a href="" role="tab" data-toggle="tab" ng-click="setTab(9)">
            Assembly Details
        </a>
    </li>
    <li ng-class="{active:isSet(7)}" ng-show="!IsInitialRelease">
        <a href="" role="tab" data-toggle="tab" ng-click="setTab(7)">
            Waivers
        </a>
    </li>
    <li ng-class="{active:isSet(8)}" ng-show="!IsInitialRelease">
        <a href="" role="tab" data-toggle="tab" ng-click="setTab(8)">
            Notifications
        </a>
    </li>
    <li ng-class="{active:isSet(5)}" ng-show="!IsInitialRelease">
        <a href="" role="tab" data-toggle="tab" ng-click="setTab(5)">
            Permits
        </a>
    </li>
    <li ng-class="{active:isSet(6)}">
        <a href="" role="tab" data-toggle="tab" ng-click="setTab(6)">
            &nbsp;Search&nbsp;
        </a>
    </li>
</ul>

从源代码来看,它看起来像一个您正尝试使用 IE VBA Automation 实现自动化的 Angular 站点。

我们可以从源代码中注意到两件事。

  1. 活动标签为 li 标签设置了 class="active" 属性。
  2. 每个 li 标签都包含带有 Angular 单击(ng-click)事件的超链接。

在这种情况下,

  1. 我们可以先尝试遍历 li 标签并删除 class="active" 属性。
  2. 通过匹配超链接文本找到所需的选项卡并单击超链接,然后为该选项卡设置 class="active" 属性。

这些步骤可能会帮助您select 所需的选项卡。

示例代码:

Sub demo()
    Dim ie
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.navigate "https://Your_Web_page_address_here..."

    Do While ie.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
     
    Set elems = ie.document.getElementsByTagName("li")
    
    For Each elem In elems
     '  Debug.Print (elem.getAttribute("class"))
        If (elem.getAttribute("class")) = "active" Then
        
            elem.removeAttribute ("class")
    
            Exit For
        End If
    Next elem
    
    For Each elem In elems
      '  Debug.Print (elem.innerText)
        If (elem.innerText) Like "*Devices*" Then
            elem.Children(0).Click
            elem.setAttribute "class", "active"
            Exit For
        End If
    Next elem
    
    'ie.Quit
End Sub

您可以尝试逐步调试示例代码,看看它是如何工作的,进一步,您可以根据自己的需要尝试修改它。