将ADODB二进制流转换为字符串vba

时间:2015-11-22 22:07:32

标签: vba file csv 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

这可以直接保存文件。但我不想将其保存到文件中,我想在正确的单元格中输入数据。有没有办法做到这一点?我不想使用Internet Explorer对象

1 个答案:

答案 0 :(得分:1)

您可以将ADO.Stream与具有LoadFromFile方法的本地文件一起使用,并将值存储到本地变量中。我这里有一个例子,用于读取使用UTF-8代码页的文件。

Dim adoStream As ADODB.Stream
Dim strText As String

Set adoStream = New ADODB.Stream
adoStream.Charset = "UTF-8"
adoStream.Open
adoStream.LoadFromFile "C:\Temp\Datei.txt"
strText = adoStream.ReadText

adoStream.Close
Set adoStream = Nothing

如果文件不是UTF-8,那么只需用Charset删除该行。 之后,您可以在变量strText中使用整个文件内容。然后,您可以使用split()函数来使用分隔符进行剪切。

以下是我获取网页内容的方法:

Dim oRequest As Object
Set oRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
oRequest.Open "GET", "http://www.cboden.de"
oRequest.Send
MsgBox oRequest.ResponseText

这也适用于CSV