第一篇文章。不知道怎么做。 以前从未从网站检索过数据。 可以通过VBA导航到包含打开报告选项的页面,但此时所有内容都从html转到Javascript以打开报告。我该如何打开报告?导航到页面或从表中删除数据没有问题
<div id='delivery_reports' class='menu' onMouseover='aMenu(this);'>
<table>
<tr>
<td nowrap><a href="javascript:handleHyperlink('finish.do')"
class="mainSubLink">finish Report</a></td>
</tr>
<tr>
<td nowrap><a href="javascript:handleHyperlink('start.do')"
class="mainSubLink">start Report</a></td>
</tr>
<tr>
<td nowrap><a href="javascript:handleHyperlink('control.do')"
class="mainSubLink">control report</a></td>
</tr>
<tr>
<td nowrap><a href="javascript:handleHyperlink('data_start.do')"
class="mainSubLink">data start Report</a></td>
</tr>
</table>
</div>
例如,我如何导航到控制报告?
任何帮助表示感谢,谢谢你
答案 0 :(得分:4)
您可以使用IE.Navigate
方法(假设此处IE是您的InternetExplorer对象)。您可以执行IE.Navigate "javascript:handleHyperlink('control.do')"
重要的是要注意页面的HTML文档将被重新加载(或者更确切地说,这是我需要使用它的一次),因此您在页面上引用HTML元素的任何变量都是如此在使用Navigate方法后,必须重新分配。
更完整的例子:
Sub Test()
Dim ie As InternetExplorer
Dim doc As HTMLDocument
Set ie = New InternetExplorer
ie.Navigate "http://www.yoururl.com"
'Wait for page to load
Do While ie.Busy Or Not ie.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
Set doc = ie.document
'Do whatever manipulation of the HTML document you need
ie.Navigate "javascript:handleHyperlink('control.do')"
'Wait for page to load
Do While ie.Busy Or Not ie.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
'Reassign document
Set doc = ie.document
'Further manipulation
End Sub
这就是我发现基于使一些代码适合我自己需要的方式。可能有更好的方法。
您可以使用两种方法(我知道)来执行JavaScript函数。第一个是execScript
,另一个是FireEvent
。请注意,IE
是您的InternetExplorer
对象。
<强> EXECSCRIPT 强>
IE.document.all.Item
Call IE.document.parentWindow.execScript("handleShowAllLines()", "JavaScript")
此外,由于js代码与按钮绑定,您也可以使用 FireEvent :
IE.Document.GetElementsByTagName("showAllLinesButton").Item(0).FireEvent("onclick")
此方法假设只有一个名为&#34; showAllLinesButton&#34;的按钮。如果不是这种情况,您必须将.Item(0)
中的索引0调整为需要点击的正确按钮的索引。
我没有测试任何一种方法,而且我不完全确定一种方法相对于另一种方法的优点/缺点。