2016-07-29 799 views
1

我不明白爲什麼我會得到這種奇怪的行爲! 當創建並分配htmlfile對象時,該函數會返回一個空白對象(「nothing」),並且當我逐行運行代碼時,即使不按F8運行下一行,它也會自動運行。 它沒有任何錯誤! 關於可能發生什麼的任何想法?createobject(「HTMLFILE」)非常奇怪的行爲!

行這裏的怪現象開始:Set htmlObj = CreateObject("HTMLFILE")

Public Function XMLHTTP_Request(Method As String, URL As String, Optional PostData As String, Optional StrCookie As String) As HTMLDocument 

Dim oXMLHTTP As Object, htmlObj as object 
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP") 
oXMLHTTP.Open Method, URL, False 
oXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
oXMLHTTP.setRequestHeader "Cookies", StrCookie 

On Error GoTo ErrorHandler 
oXMLHTTP.send (PostData) 
On Error GoTo 0 

While oXMLHTTP.ReadyState <> 4: DoEvents: Wend 
While oXMLHTTP.Status <> 200: DoEvents: Wend 

Set htmlObj = CreateObject("HTMLFILE") 

htmlObj.body.innerHTML = oXMLHTTP.responseText 
Set XMLHTTP_Request = htmlObj 

End Function 
+1

*超標記文本語言*? – Jeeped

+0

@pnuts:好的,刪除它。 – jony

+0

@Jeeped是的,HTMLDocument。 – jony

回答

1

的功能重複調用會造成CreateObject function多次調用。 oXMLHTTP和htmlObj對象變量可以是靜態的,也可以包含庫引用,變量聲明變爲Early Binding。

早期綁定要求通過VBE的工具►引用命令添加以下非默認庫引用。

  • Microsoft HTML對象庫
  • Microsoft Internet控制
  • 微軟XML 6.0(你自己的版本可能會有所不同)。

模塊1碼片:

Option Explicit 

Sub main() 
    Debug.Print Left(XMLHTTP_Request("http//example.com").body.innerText, 512) 
End Sub 

Public Function XMLHTTP_Request(URL As String, _ 
           Optional Method As String = "POST", _ 
           Optional PostData As String = "", _ 
           Optional StrCookie As String = "") As HTMLDocument 
    Dim oXMLHTTP As New MSXML2.XMLHTTP60 
    Dim htmlObj As New HTMLDocument 

    oXMLHTTP.Open Method, URL, False 
    oXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
    oXMLHTTP.setRequestHeader "Cookies", StrCookie 

    oXMLHTTP.send PostData 

    If oXMLHTTP.Status <> 200 Then Exit Function 

    htmlObj.body.innerHTML = oXMLHTTP.responseText 

    Set XMLHTTP_Request = htmlObj 

End Function 

運行main()子過程將輸出網頁的文本到立即窗口([CTRL] + G)的第一512個字符。

+0

你值得擁有你巨大的聲望!非常感謝! – jony