在没有IE窗口的情况下从VBA调用Javascript函数

时间:2017-08-25 23:14:45

标签: javascript excel vba webrequest

使用VBA,我试图在网页上调用Javascript函数,而不必实际导航到IE中的页面。有问题的功能会将一个项目添加到用户的购物车中。

这是VBA代码:

Dim url             As String  
Dim ReqIE           As MSXML2.XMLHTTP60

url = "http://website.com/store"
Set ReqIE = New MSXML2.XMLHTTP60

ReqIE.Open "GET", url, False
ReqIE.Send

While ReqIE.readyState <> 4
    DoEvents
Wend

Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLBody As MSHTML.HTMLBody

Set HTMLDoc = New MSHTML.HTMLDocument
Set HTMLBody = HTMLDoc.body

请注意,我正在使用Web请求检索页面,而不是首先导航到IE中的页面,然后与页面进行交互(这是我通过VBA问题制定的大多数Web自动化的方式)。

在检索到的页面上,有一个引用的JavaScript文件,其中包含许多函数。这是我试图调用的函数:

function addToCart(pid, qty) {
    if (typeof(pid) == 'string' && pid.indexOf('product options') == 0) {
        alert('Please choose an in stock option before adding to cart.');
        return false;
    } else if (!parseInt(pid)) return false;
}

因此,我尝试过这样的事情:

HTMLDoc.parentWindow.execScript "addToCart(15622, 1)"

这会从VBE产生“自动化错误”消息。在这一点上,我基本上不知道我在做什么,我只是尝试通过我的研究遇到的东西...我认为这个问题与缺乏实际的IE窗口进行交互有关但我可以对此也完全错了。

任何人都知道如何才能继续前进吗?

0 个答案:

没有答案