如何从VBA / Excel中的MSXML.ResponseText读取CRLF分隔线

我用MSXML看到的大多数示例都必须使用Javascript或JQuery,但是我正在编写不使用的Excel 2010macros。

我的目标是下载一个文件(如下所示),并parsing一个中等大小(5到15MB)的CSV文件。 我最终希望将CSV数据保存在隐藏数据选项卡中。

我在这个CSV VBA示例中做了一些改进,但是我不知道如何将MSXML.ResponstText的输出粘贴到这个示例中。

这是我的VBA /macros代码

Set objHttp = CreateObject("MSXML2.ServerXMLHTTP") 'objHttp.SetRequestHeader "Content-Type", "text/csv" 'objHttp.SetRequestHeader "charset", "gb2312" Call objHttp.Open("GET", fileURL, False) Call objHttp.Send("") 'Call MsgBox(objHttp.ResponseText) 

我如何得到excel与ResponseText一起工作,只读一行?

我说,不要混用东西。 首先下载CSV文件,然后阅读。

从你的问题来看,你的目标是什么并不明显。 如果你想分析这个文件,那么你可以使用本地VBA语句来逐行读取和parsing它:

 Dim filePath As String Dim fn As Integer Dim myLine As String Dim myParsedLine() As String filePath = "C:\DatabaseWeeklyStats.csv" fn = FreeFile() Open filePath For Input As #fn Do Until EOF(fn) Line Input #fn, myLine myParsedLine = Split(myLine, ",") ' Line is now parsed. Do stuff. Loop 

如果您只是想将整个CSV文件粘贴到工作簿中的新工作表中,而不必事先“parsing”它(即解释其内容),则可以这样做:

 Dim dbSheet As Worksheet Dim targetSheet As Worksheet Workbooks.Open Filename:="C:\DatabaseWeeklyStats.csv", _ Format:=2 ' use comma delimiters Set dbSheet = ActiveSheet Set targetSheet = Workbooks("Book1").Sheets(3) ' wherever you want to move it to dbSheet.Move After:=targetSheet ' dbSheet is now in your workbook. ' Hide it. Set dbSheet = ActiveSheet dbSheet.Visible = xlSheetHidden 
 Dim opener As New FileSystemObject Dim fContainer Set fContainer = opener.OpenTextFile("c:\DatabaseWeeklyStats.csv") Do Until fContainer.AtEndOfStream sText = fContainer.ReadLine Debug.Print sText Loop 

这需要参考Microsoft脚本运行时