Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA创建XML,但需要CSV_Xml_Vba_Soap - Fatal编程技术网

VBA创建XML,但需要CSV

VBA创建XML,但需要CSV,xml,vba,soap,Xml,Vba,Soap,我有一个VBA脚本,它将调用Web服务并将数据保存到XML文件中。如何修改脚本以将数据保存为CSV文件而不是XML 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/ClientS

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

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
子调用\u管道\u宏()
作为字符串的Dim sURL
作为字符串的Dim sEnv
Dim xmlhtp作为新的MSXML2.XMLHTTP
Dim xmlDoc作为新的DOMDocument
苏尔=”http://service.leads360.com/ClientService.asmx"
sEnv=“”
sEnv=sEnv&“
sEnv=sEnv&“
sEnv=sEnv&“
sEnv=sEnv&“vtorralbes@globalhealtheducation.com"
sEnv=sEnv&“XXXXX”
sEnv=sEnv&“565”
sEnv=sEnv&“
sEnv=sEnv&“
sEnv=sEnv&“
使用xmlhtp
.打开“post”,sURL,False
.setRequestHeader“主机”、“service.leads360.com”
.setRequestHeader“内容类型”、“文本/xml;字符集=utf-8”
.setRequestHeader“soapAction”https://service.leads360.com/GetReportResults"
.setRequestHeader“接受编码”、“压缩”
1.发送sEnv
xmlDoc.LoadXML.responseText
xmlDoc.Save“X:\share\Reporting Database\XML Files”和“\565\u pipeline\u report.XML”
以
端接头

在这里可以找到回复示例:


看起来Web服务只能返回soap xml。如前所述,您必须遍历已加载在
xmlDoc
中的XML字符串,并根据需要输出值,以便为每条记录创建一个CSV字符串,用vbCrLf(换行符)分隔,然后另存为文本文件。

如果数据以XML形式返回,则必须将该内容转换为逗号分隔格式并保存到文件中。如果看不到XML的布局,很难说得更具体。谢谢Tim…这是我的问题。我可以让数据返回并另存为CSV,而不是以XML的形式返回吗?这是由web服务控制的-如果它只支持以XML的形式返回数据,那么您就必须这样做。确实,为什么要将其另存为CSV?理论上,它将是文本文件中的相同数据,其格式可能无法用于所需的目的。根据XML的布局,您可以引用库(MSXML)并通过VBA操作XML文件。向我们展示XML以及所需的输出。否则几乎帮不上忙。