如何在VBA中访问#document(虚拟文档)(excel 2007)

时间:2018-03-07 11:46:03

标签: html vba excel-vba internet-explorer web-scraping

我刚刚开始在IE中使用vba自动化,目前我正在尝试制定一个例程,让我的工作变得更轻松。为此,我必须每天早上完成一个网站。到目前为止,我设法登录该网站并单击一些按钮,当我需要选择一个选项卡时我卡住了;有3个选项卡,其中一个自动选中,第三个实际上,我需要选择第二个(Inserimento Giustificativi):

the 3 tabs i'm talking about

接下来,我将为您提供选项卡的代码:

<div id="TabContainer1_header" class="ajax__tab_header">
            <span id="TabContainer1_TabPanel3_tab" class="">
             <span class="ajax__tab_outer">
              <span class="ajax__tab_inner">
               <span id="__tab_TabContainer1_TabPanel3" class="ajax__tab_tab">Console Operativa</span>
              </span>
             </span>
            </span>
            <span id="TabContainer1_TabPanel1_tab" class="">
             <span class="ajax__tab_outer">
              <span class="ajax__tab_inner">
               <span id="__tab_TabContainer1_TabPanel1" class="ajax__tab_tab">Inserimento Giustificativi</span>
             </span>
            </span>
           </span>
           <span id="TabContainer1_TabPanel2_tab" class="ajax__tab_active">
            <span class="ajax__tab_outer">
             <span class="ajax__tab_inner">
              <span id="__tab_TabContainer1_TabPanel2" class="ajax__tab_tab">Giustificativi Generici</span>
             </span>
            </span>
           </span>
</div>

这是我到目前为止所做的代码(非常基本的):

Sub SearchBot()

    Dim objIE As InternetExplorer
    Dim ele As Object

    Set objIE = Nothing

    Set objIE = New InternetExplorer

    objIE.Visible = True

    objIE.navigate "sia.comdata.it/opera"

    Application.Wait (Now + TimeValue("00:00:05"))

    objIE.document.getElementById("UserName").Value = "username"

    objIE.document.getElementById("Password").Value = "$password"

    objIE.document.getElementById("LoginButton").Click

    Application.Wait (Now + TimeValue("00:00:05"))

    objIE.document.getElementById("palla").Click

    Application.Wait (Now + TimeValue("00:00:02"))

    objIE.document.getElementById("content_GestioneOperativo").getElementsByTagName("a")(2).Click

    Application.Wait (Now + TimeValue("00:00:30"))

End Sub

我尝试了上面的所有方法,并且已经在互联网上搜索了一周的解决方案,但没有,我一直得到错误运行时错误91或者不支持该操作。

另外我注意到当手动单击其中一个选项卡时,ClassName“ajax__tab_active”会将自身移动到我选择的标记的类中,并且填充了“ajax__tab_active”的ClassName仍为空白我不知道是否有帮助,只是我发现它很奇怪。

任何提示都会有所帮助,因为我是一个初学者,我真的不知道还有什么可以尝试,因为我在这里写作,

谢谢。

*我正在编辑我的问题,因为我做了很多尝试,我注意到我无法访问部分源代码。在源代码的某个时刻,有一个名为iframe的标签,在#document之后,似乎我无法以任何方式访问#document下的任何内容,谷歌搜索它我知道它是一个嵌入在源代码中的虚拟文档代码,但我仍然不知道如何访问它:

Virtual document

这就是源代码的外观和选择的行是我需要得到的,

谢谢。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。 为了能够访问#document下的数据,似乎所有我必须做的就是登录,然后导航到网站上面的一行,即:https://sia.comdata.it/opera/GestioneOperativo/Giustificativi.aspx,之后一切顺利。 希望这能帮助那些遇到同样问题的人,或者至少知道在他的情况下该怎么做,

谢谢。