VBA代码在调试模式下运行,但不在运行时

时间:2019-01-03 12:46:45

标签: excel vba excel-vba

    Public myHTTP As MSXML2.XMLHTTP60
    Sub SendXML()
    Dim response As String 
    Dim MyXmlHttpHandler As CXMLHTTPHandler 
    Dim myxml As String 
    Dim a As String
    Dim URL2 As String 
    Dim FSO As Object
    Dim NewFile As Object
    Dim XMLFileText As String

    If Not myHTTP Is Nothing Then Set myHTTP = Nothing

    Set myHTTP = New MSXML2.XMLHTTP60
    Set MyXmlHttpHandler = New CXMLHTTPHandler
    MyXmlHttpHandler.Initialize myHTTP
    myHTTP.OnReadyStateChange = MyXmlHttpHandler
    myxml = "D:\1.xml"
    myHTTP.Open "get", myxml, True
    myHTTP.send (myxml)
    a = myHTTP.responseText
    URL2=Workbooks("MainSheet.xlsm").Worksheets("OTHERS").Range("I2").Value
    If Workbooks("MainSheet.xlsm").Worksheets("OTHERS").Range("h2").Value = vbNullString Or Workbooks("MainSheet.xlsm").Worksheets("OTHERS").Range("h3").Value = vbNullString Then
    MsgBox "User not defined server database address or port number...!!!" & vbNewLine & " Failed.."
    Exit Sub
    End If

    myHTTP.Open "POST", URL2, True
    myHTTP.send (a)

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set NewFile = FSO.CreateTextFile("D:\response.XML", 1, 1)
    XMLFileText = ""
    NewFile.write (XMLFileText & myHTTP.responseText & vbNewLine)  ‘---------error occurred here not printing my response.text in new file.

    End Sub

接下来我已经尝试过错误恢复,它只是打印一个空白文件。

我也尝试过错误goto errorhandler 但它也无法显示运行时错误对话框。...

我只想将响应文本保存在xml文件中,而没有任何错误拨号框。

2 个答案:

答案 0 :(得分:1)

为将来的读者

将最后一个参数从True更改为False

myHTTP.Open "POST", myxml, False

允许完成时间

答案 1 :(得分:0)

这是大文件吗?为什么以这种方式使用异步包装器?为什么不使用带有False参数的简单xmlhttp POST请求? – 8分钟前QHarr

此评论解决了我的错误.....谢谢