MSHTML:如果菜单面板很窄,单击菜单按钮使其消失

时间:2018-02-15 17:31:38

标签: html vba excel-vba web-scraping mshtml

我一直在尝试使用VBA中的MSHTML类从数据库中提取excel电子表格。在这样做时,我不得不点击不同的按钮并在搜索框中输入短语等。我设法做到了这一点而没有问题。

在下图中,您可以看到我正在使用的环境。

Work environment

右侧的红色框显示一个手柄,您可以在其中拖动它以调整搜索面板的大小。如果搜索面板很小,则应单击侧箭头栏以使“操作”按钮可见(有意义)。

我可以单击“操作”按钮,然后单击“将列表导出到文件”按钮,如果搜索面板足够宽,则不会遇到任何问题,但如果它很窄(在必须执行该附加步骤的情况下,则不会)。见下图:

Actions Menu

如果面板很窄,当我点击Actions下拉菜单上的任何按钮时,整个事情就会消失。因此,我只能悬停,除了点击之外我找不到任何方法。这是我在右键单击Export List to File按钮并选择inspect:

时得到的
<li class="liClass" id="liID">
    <a class="aClass" id="aID" hidefocus="true" href="javascript:var abc = doNothing()" unselectable="on">
        <img class="imgClass" id="imgID" src="SourceURL">
        <span class="spanClass" id="spanID">Export List to File</span>
    </a>
</li>

如您所见,没有按钮对象。我想也许这与问题有关,但为什么这种方法适用于一个案例而不是另一个案例呢?

这是我用来点击所需按钮的代码:

Dim ExportButton As MSHTML.IHTMLElement
Dim ExportButtons As MSHTML.IHTMLElementCollection
Set SearchElement = Nothing

While ExportButton Is Nothing
    Set ExportButtons = HTMLDoc.getElementsByTagName("span")

    If Not ExportButtons Is Nothing Then

        For Each SearchElement In ExportButtons

            If SearchElement.innerText = "Export List to File" Then
                Set ExportButton = SearchElement
                Debug.Print ("Export List To File is identified!")
            End If

        Next SearchElement

    End If
Wend

Application.Wait (Now + #12:00:03 AM#)

ExportButton.Click

Application.Wait (Now + #12:00:03 AM#)

如果有人能帮我解决这个问题,我会很感激。我是一般的编程新手,几个月前开始学习VBA。

最佳, 阿尔曼

1 个答案:

答案 0 :(得分:0)

如果您调整&#34;搜索面板&#34;在设置val sparkConfiguration = sparkConf(master, appName).setAll(extraConf) val sparkContext = new SparkContext(sparkConfiguration) val cassConnec = CassandraConnector(sparkConfiguration) val accEcriture=sparkContext.longAccumulator("accEcriture") val accCompteur=sparkContext.longAccumulator("accCompteur") 集合之前,您可能需要重置 sparkContext. cassandraTable(keyspace,aTable) .foreachPartition { list => list.foreach { row => // accessing an accumulator or a variable or sparkcontext generate NPE !!! accEcriture.add(1) accCompteur.add(1) } } 参考。