需要你的专业知识和帮助,因为我环顾四周,无法找到解决方案:
我正在使用msxml2.xmlhttp方法从网站上传信息到Excel(之前通过webquery做过,但是经过几次迭代后它会卡住加上它会变慢)。我的问题是,现在每次迭代,我都会弹出一个Windows安全警告,要求我接受网站上的cookie。请注意,该网站不需要登录/密码。我从之前的帖子中了解到,出于安全原因,msxml2.xmlhttp方法会删除cookie,但即使我将方法更改为winhttp,也会收到相同的消息。我还更改了IE中的设置以自动接受来自网站的所有cookie,但它没有帮助。
我的问题是,我需要添加哪些代码才能自动接受cookie,因为我正在批量循环此代码并且不能让它等待我手动接受cookie。非常感谢您的帮助!下面是代码片段(我实际上在Stackoverflow上找到了它)。
Set htm = CreateObject("htmlFile")
With CreateObject("msxml2.xmlhttp")
.Open "GET", "http://finance.yahoo.com/q/ae?s=" & Ticker & "+Analyst+Estimates", False
.send
htm.body.innerHTML = .responseText
End With
Set elemCollection = htm.getElementsByTagName("td")
For Each itm In elemCollection
If itm.className = "yfnc_tabledata1" Then
ActiveCell = itm.innerText
If ActiveCell.Column = 7 Then
ActiveCell.Offset(1, -6).Select
Else
ActiveCell.Offset(0, 1).Select
End If
End If
Next
答案 0 :(得分:0)
本周我遇到了同样的问题。
google并尝试了一些想法后,我在代码中添加了两个MsgBox语句。
objXMLDoc.Open "GET", strURL, False
objXMLDoc.send
MsgBox "After XMLDoc.send", vbOKOnly, "Test"
objHTMLDoc.body.innerHTML = objXMLDoc.responseText
MsgBox "After .innerHTML assignment", vbOKOnly, "Test"
我发现弹出式安全警告窗口总是出现在.innerHTML赋值之后,即问题与XMLHttp无关。它是HTMLDocument,它会导致弹出窗口。
我猜objHTMLDoc.body.innerHTML = objXMLDoc.responseText
不只是做一个简单的值赋值。它还必须根据网页的内容触发一些动作。
我检查了网页,发现了一些像这样的代码:
YUI().use('node','event','event-mouseenter','substitute','oop','node-focusmanager','node','event','substitute','**cookie**','event-resize','node', 'event', 'querystring-stringify','node','event','node','event','event-custom','event-valuechange','classnamemanager','node', function(Y) {})
然后我按如下方式更改了我的代码,弹出警告窗口消失。
objXMLDoc.Open "GET", strURL, False
objXMLDoc.send
objHTMLDoc.body.innerHTML = Replace(objXMLDoc.responseText, "cookie", "")
希望如果您仍有问题,这可能会有所帮助。