2017-10-20 75 views
-1

我想發送一個簡單的http發佈請求。如果我使用ajax通過Internet Explorer控制檯發送它,它的工作方式非常好,但是我在使用VBA時遇到問題。 我發現問題是我工作的公司的代理服務器。它只允許配置的軟件訪問互聯網。所以我的VBA腳本被阻止,但一切工作正常與Internet Explorer。 無論如何,我可以直接寫入Internet Explorer控制檯並通過ajax發送http post請求嗎?用excel寫入Internet Explorer javascript控制檯與vba

謝謝你的幫助!

+0

你是指從excel控制?除非有一些COM對象允許你自動化IE,否則。由於瀏覽器安全限制,您不可能將響應數據導出到Excel中。如果你有一個真正的業務需要這樣做,並且Excel是真正做這項工作的最佳媒介(通常根據我的經驗,這只是避免讓開發人員編寫正確的應用程序的解決方法),那麼您可能需要提出請求到您的IT服務以對此規則進行例外以允許您的電子表格連接到代理。 – ADyson

+0

也有可能你已經可以做到這一點,但是你的代理只是返回一個407(「需要代理身份驗證」)響應?這意味着你只需要提供正確的代理證書作爲HTTP請求的一部分,它就可以工作。取決於如何配置代理,有不同的方法來做到這一點 - 周圍有谷歌。 – ADyson

+0

感謝您對@ADyson的迴應。所以沒有辦法將數據發送到IE控制檯。有沒有辦法用vba中的CreateObject(「InternetExplorer.Application」)執行http post? 我沒有問題通過訪問互聯網。 通常我使用CreateObject(「WinHttp.WinHttpRequest.5.1」),但代理服務器阻止我離開公司Intranet。它內部工作完全正常訪問我們的本地服務器,如MS Sharepoint。我也不需要直接的迴應。我只需要它訪問下一個網站來解析它的數據。 – ceinem

回答

0

並不意味着作爲一個答案

這是從對象瀏覽器

InternetExplorer對象的navigate method採取

Sub Navigate(URL As String, [Flags], [TargetFrameName], [PostData], [Headers]) 
Member of SHDocVw.InternetExplorer 
Navigates to a URL or file. 

所以也許這個對象可能會奏效CreateObject("InternetExplorer.Application")

的微軟網站提到,如果數據是,則使用POST方法在POSTDATA說法,否則GET方法用於

https://msdn.microsoft.com/en-us/library/aa752093(v=vs.85).aspx

PS:在OP發現這個電話與呼叫AJAX解決了這個問題,因爲根據註釋從OP

IE.document.parentWindow.execScript("javascript_code()", "JavaScript") 

快例子...

IE.Document.parentWindow.execScript "alert('Arbitrary javascript code')", "javascript" 
+0

謝謝!那正是我正在尋找的。不幸的是我無法讓它工作。我不知道爲什麼。但後來我發現了這段不錯的代碼:調用IE.document.parentWindow.execScript(「javascript_code()」,「JavaScript」),它像ajax調用的魅力一樣工作。現在所有的問題都解決了。 – ceinem