gpt4 book ai didi

javascript - 使用VBA在带有框架的网页上执行javascript

转载 作者:太空宇宙 更新时间:2023-11-04 16:20:46 31 4
gpt4 key购买 nike

我正在尝试在包含框架的 IE 11 网页上执行 javascript,并且我正在使用 VBA 来执行 javascript。这是我的第一次尝试,所以我可能会犯一些新手错误。我试图自动化的操作是按文件夹上的“+”号以展开它。我已经看到了很多关于这个主题的讨论,并且我尝试包含我认为与我的代码相关的内容。但经过多次尝试,我仍然无法让它工作。我试图开始工作的 VBA 代码如下。下面对 execScript 的每次调用都是执行 javascript 的尝试。我收到的 VBA 错误消息作为注释放置在每次调用之前。预先感谢您提供的任何帮助。

    Dim doc             As MSHTML.IHTMLDocument
Dim Frames As MSHTML.IHTMLFramesCollection2
Dim Window As MSHTML.IHTMLWindow2

ie.Navigate "URL of my web page"
Set doc = ie.Document


' Error: Method 'frames' of object JScriptTypeInfo failed.

Call ie.Document.Frames(0).execScript("populateNode(document.getElementById('treeViewRootNode_Home_0_children'),treeView_Data,document.getElementById('treeViewRootNode_Home_0'),'treeViewRootNode_Home_0');", "JavaScript")

' Error: Could not complete the operation due to error 80020101.

Call ie.Document.Frames.Item(0).execScript("populateNode(document.getElementById('treeViewRootNode_Home_0_children'),treeView_Data,document.getElementById('treeViewRootNode_Home_0'),'treeViewRootNode_Home_0');", "JavaScript")

' Error: Method 'frames' of object JScriptTypeInfo failed.

Call ie.Document.Frames("navigationBodyFrame").execScript("populateNode(document.getElementById('treeViewRootNode_Home_0_children'),treeView_Data,document.getElementById('treeViewRootNode_Home_0'),'treeViewRootNode_Home_0');", "JavaScript")

以下是我能够使用 Firebug 获取的框架 HTML 的一部分:

    <span id="treeViewRootNode_children" style="display:block">
<table cellspacing="0" cellpadding="0" border="0">
<span id="treeViewRootNode_Home_children" style="display:block">
<table cellspacing="0" cellpadding="0" border="0">
<span id="treeViewRootNode_Home_MyFolders_children" style="display:none">
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td>
<td>
<span id="treeViewRootNode_Home_0_spare"></span>
<span id="treeViewRootNode_Home_0_hidden" style="display: none"></span>
<a id="treeViewRootNode_Home_0" href="javascript:populateNode(document.getElementById('treeViewRootNode_Home_0_children'),treeView_Data,document.getElementById('treeViewRootNode_Home_0'),'treeViewRootNode_Home_0');">
<img id="treeViewRootNode_Home_0_lineImg" src="LineImages/lplus.gif" border="0">
</a>
</td>
<td nowrap="true">
</tr>
</tbody>
</table>
<span id="treeViewRootNode_Home_0_children" style="display:none"></span>

最佳答案

我今天能够让它工作。这就是我所做的,可能还有更简单的方法。如果有的话,我很想听听。

使用 VBA 调试器,我能够发现我的网页中有多个级别的框架。使用 firebug,我能够找出哪个框架包含我想要按下的图标。这是按下我需要按下的图标的代码。

Dim ie             As SHDocVw.InternetExplorer
Dim doc As MSHTML.HTMLDocument
Dim Frames As MSHTML.IHTMLFramesCollection2
Dim Window As MSHTML.IHTMLWindow2

ie.Navigate "URL of my web page"
Set doc = ie.Document
Set Window = doc.Frames(0).Frames(0).Frames(1).Frames(0)
Call Window.execScript("collapseHeader();", "JavaScript")

Set doc = Nothing
Set Window = Nothing

关于javascript - 使用VBA在带有框架的网页上执行javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40668733/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com