【问题标题】:VBA creates XML but need CSV insteadVBA 创建 XML 但需要 CSV
【发布时间】:2012-06-28 19:38:43
【问题描述】:

我有这个 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

【问题讨论】:

  • 如果数据以 XML 格式返回,那么您必须将该内容转换为逗号分隔格式并将其保存到文件中。如果没有看到 XML 的布局,很难更具体。
  • 谢谢蒂姆...这是我的问题。我可以让它返回并保存为 CSV,而不是返回为 XML 的数据吗?
  • 这是由 Web 服务控制的 - 如果它只支持以 xml 格式返回数据,那么你就会被困住。
  • 确实,为什么要保存为csv?从理论上讲,它将是文本文件中的相同数据,其格式可能无法用于您需要的目的。您可以根据 XML 的布局引用库 (MSXML) 并通过 VBA 操作 XML 文件。
  • 向我们展示 XML 以及您想要的输出的样子。否则几乎不可能提供帮助。

标签: xml vba soap


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 2016-03-03
    相关资源
    最近更新 更多