【发布时间】: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 以及您想要的输出的样子。否则几乎不可能提供帮助。