VBA创建XML但需要CSV

时间:2012-06-28 19:38:44

标签: xml vba soap

我有这个VBA脚本,它将调用web服务并将数据保存到XML文件中。而不是XML,我如何修改脚本以将数据保存为CSV文件?

Sub Call_Pipeline_Macros()

    Dim sURL As String
    Dim sEnv As String
    Dim xmlhtp As New MSXML2.XMLHTTP
    Dim xmlDoc As New DOMDocument
    sURL = "http://service.leads360.com/ClientService.asmx"

    sEnv = "<?xml version=""1.0"" encoding=""utf-8""?>"
    sEnv = sEnv & "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">"
    sEnv = sEnv & "  <soap:Body>"
    sEnv = sEnv & "    <GetReportResults xmlns=""https://service.leads360.com"">"
    sEnv = sEnv & "      <username>vtorralbes@globalhealtheducation.com</username>"
    sEnv = sEnv & "      <password>XXXXX</password>"
    sEnv = sEnv & "      <reportId>565</reportId>"
    sEnv = sEnv & "    </GetReportResults>"
    sEnv = sEnv & "  </soap:Body>"
    sEnv = sEnv & "</soap:Envelope>"

    With xmlhtp
        .Open "post", sURL, False
        .setRequestHeader "Host", "service.leads360.com"
        .setRequestHeader "Content-Type", "text/xml; charset=utf-8"
        .setRequestHeader "soapAction", "https://service.leads360.com/GetReportResults"
        .setRequestHeader "Accept-encoding", "zip"
        .send sEnv
        xmlDoc.LoadXML .responseText
        xmlDoc.Save "X:\share\Reporting Database\XML Files" & "\565_pipeline_report.xml"

    End With
End Sub

1 个答案:

答案 0 :(得分:0)

可以在此处找到答复的示例:http://service.leads360.com/Documentation/Examples/Client/GetReportResults.templateValues.txt

看起来webservice看起来不像soap xml那样返回任何东西。如上所述,您必须遍历已加载到xmlDoc中的XML字符串并根据需要输出值,以便为每个记录创建一个CSV字符串,以vbCrLf(换行符)分隔,然后另存为文本文件。 / p>