【问题标题】:VBA selecting tab on webpage which refers to Java Script网页上的 VBA 选择选项卡指的是 Javascript
【发布时间】:2018-07-31 12:28:03
【问题描述】:

我有以下 HTML 代码(见下文),我想点击此网页上名为 NBT Order Intake 的按钮。除了单击此选项卡标题(选项卡后面没有 URL,因此无法以这种方式导航)之外,我的代码适用于所有内容。我相信有用的代码位于图像中两个突出显示的部分之间。

我试过查询选择器。单击名称和 ID 以及获取元素功能。

任何帮助将不胜感激(只需将 1 行代码添加到我的字符串中)

注意。网站安全且已登录,因此无法共享 URL,因此无法共享代码图像。


HTML:

name="home_tab_name_97" value="KPI - Best Card Jobs"/></div>
<div id="home_tab_98" class="home_tab" title="" >
   <div class="home_tab_inner"><span id="home_tab_label_98" onclick="SelectHomeTab(98)">NBT Order Intake</span>&nbsp;<img src="Includes.aspx?type=image&amp;name=Images/lsd_down.gif" border="0" class="home_tab_setting" onclick="HomeTabSettings(98)" /></div>
   <div class="el_hidden" id="home_tab_settings_98">
      <div><a class="mnu_item" href="javascript: RenameHomeTab(98)">Rename</a></div>
      <div><a class="mnu_item" href="javascript: DeleteHomeTab(98)">Delete</a></div>
      <div><a class="mnu_item" href="javascript: ShareHomeTab(98)">Make Public</a></div>
      <div><a class="mnu_item" href="javascript: ShowAddDashCustomPageOptions(98)">Add Custom Item</a></div>
      <div class="mnu_item_divider"></div>
      <div><a class="mnu_item" onclick="HideHomeSettings(98)">Cancel</a></div>
   </div>
   <input type="hidden" id="home_tab_name_98" name="home_tab_name_98" value="NBT Order Intake"/>
</div>
<div id="home_tab_99" class="home_tab" title="" >
<div class="home_tab_inner">
<span id="home_tab_label_99"

HTML 图像:


VBA:

Sub test()
    Dim IE As Object
    Dim objElement As Object
    Dim objCollection As Object

    'add worksheet
    Sheets.Add after:=ActiveSheet

    'destination
    Set destsheet = ActiveSheet

    'use internet explorer
    Set IE = CreateObject("InternetExplorer.application")
    ' with internet open, make this visable and go to webpage x, enter username a
    nd passwork
    With IE
        .Visible = True
        .navigate ("URL")
        While .Busy Or .readyState <> 4: DoEvents: Wend
        'ie.Document.getElementsbyname("User name").Focus
        IE.document.getElementsByName("username")(0).Value = "Username"
        IE.document.getElementsByName("password")(0).Value = "Pword"
        While .Busy Or .readyState <> 4: DoEvents: Wend
        'look for the input field (HTML CODE)
        Set objCollection = IE.document.getElementsByTagName("input")

        i = 0
        While i < objCollection.Length
            If objCollection(i).Type = "submit" And _
               objCollection(i).Name = "" Then
                ' "Search" button is found
                Set objElement = objCollection(i)

            End If
            i = i + 1
        Wend
        '(click the log on)
        objElement.Click
        While .Busy Or .readyState <> 4: DoEvents: Wend
    End With
    With IE
        IE.document.querySelector("input[id=home_tab_name_98]").Click
    End With
    'close the internet page
End Sub

【问题讨论】:

  • 啊好的找到了如何输入代码,有没有办法让你自己更容易看到它?目前只有1条大线,我只需要随机按Enter吗?
  • 我进行了编辑,以便您更好地了解外观。如果需要,您可以通过edit 使用回滚功能恢复所有更改。

标签: javascript html vba web-scraping


【解决方案1】:

你可以试试:

ie.document.querySelector("#home_tab_label_98").Click
ie.document.querySelector("#home_tab_label_98").FireEvent "onclick"

或者

ie.document.parentwindow.execscript "SelectHomeTab(98)"

元素的实际选择是通过 CSS 选择器进行的,#home_tab_label_98 以 id 为 home_tab_label_98 的元素为目标。 "#" 用于 id。


如果找不到对象,则:

  1. 确保在尝试选择或尝试循环选择之前有暂停;
  2. 检查嵌套在其中的任何前面的表单/框架/iframe 标记。需要导航这些标记以访问该元素;
  3. 请记住,在任何点击事件或表单提交后,您都需要While .Busy Or .readyState &lt;&gt; 4: DoEvents: Wend

还是不行:

请显示更多 html。

【讨论】:

  • 我得到运行时错误'424'没有指定对象?我可以看到没有前面的标签,但代码是大量的:'(我必须 ctrl - f 相关字段。
  • 仔细检查 form/iframe/frame 标签。可以ctrl+f搜索。您是否还有足够的时间让元素可见?
  • 认为我的代码很好(我已粘贴在底部的问题中)我相信 wend busy 位应该足以加载页面但可能需要等待 2 秒可以肯定。-虽然我可能正在寻找错误的东西,但我仍然看不到任何 iforms 等,我对 HTML 没有经验是否有我应该寻找的特定标签我只是 ctril+f'ed 框架等找到了几个标签但指向与此选项卡不相关的不同代码
  • 当我尝试添加 application.wait #12:00:02# excel 崩溃 -_- 不起作用
  • HTML 中唯一与我想点击的按钮(选项卡)相关的部分我已经发送给你了 :( 我对这种数据库知之甚少,所以我不知道如何制作这项工作-_-感谢您的帮助,但我认为我将不得不接受这一点自动化的失败,尽管感谢您的帮助!只需手动执行最后几个值。
猜你喜欢
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多