g00*_*lex 4 csv vba file download delimited-text
我有以下问题:我有一个CSV文件存储在服务器上,但它有3个字符作为分隔符:"[|]".我想从URL加载数据,并使用[|]作为分隔符填充Excel页面的列中的数据.到目前为止,我发现使用ADODB记录集从网站加载文件的代码,但我无法进一步:
myURL = "http://www.example.com/file.csv"
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False, "username", "password"
WinHttpReq.send
myURL = WinHttpReq.responseBody
If WinHttpReq.Status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1 'binary type
oStream.Write WinHttpReq.responseBody
oStream.SaveToFile "E:\file.csv", 2 ' 1 = no overwrite, 2 = overwrite
oStream.Close
End If
Run Code Online (Sandbox Code Playgroud)
这可以直接保存文件.但我不想将其保存到文件中,我想在正确的单元格中输入数据.有没有办法做到这一点?我宁愿不使用Internet Explorer对象
使用常规csv文件测试OK:
Sub Tester()
Dim myURL As String, txt As String, arrLines, arrVals
Dim l As Long, v As Long, WinHttpReq As Object
Dim rngStart As Range
myURL = "http://www.mywebsite.com/file.csv"
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False, "username", "password"
WinHttpReq.send
txt = WinHttpReq.responseText
'might need to adjust vbLf >> vbCrLf or vbCr
' depending on the file origin (Win/Unix/Mac)
arrLines = Split(txt, vbLf)
Set rngStart = ActiveSheet.Range("A1")
For l = 0 To UBound(arrLines)
arrVals = Split(arrLines(l), "[|]")
For v = 0 To UBound(arrVals)
rngStart.Offset(l, v).Value = arrVals(v)
Next v
Next l
End Sub
Run Code Online (Sandbox Code Playgroud)