ADODB Stream конвертирует двоичный файл в строку - PullRequest
1 голос
/ 08 мая 2020

Я столкнулся с проблемой при попытке открыть файл с URL-адреса с помощью ADODB, а затем использовать его как строковый поток. По сути, проблема, с которой я столкнулся, - это почти дубликат этого вопроса здесь:

преобразовать двоичный поток ADODB в строку vba

За исключением того, что Я должен использовать поток ADODB для работы с контентом позже. Поэтому полностью пропускать ADODB не вариант, как в ответе в другом топи c. Прямо сейчас я делаю HTTP-запрос GET, используя поток двоичный , чтобы сохранить его как файл, а затем загружаю тот же файл, используя поток текст . Это прекрасно работает, но должен быть способ пропустить часть сохранения-загрузки и заставить ее работать напрямую.

Вот код, который у меня есть:

Dim myURL As String
myURL = "https://xyz.xyz/xyz.csv"
Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False
WinHttpReq.Send

Dim objStream, strData
Dim leftcellstarttemp As Variant, rightcellstarttemp As Variant, leftcellendtemp As Variant, rightcellendtemp As Variant, r As Long, line As String, dtStr As String, mlValue As String, dtArr() As String

myURL = WinHttpReq.ResponseBody
If WinHttpReq.Status = 200 Then
    Set oStream = CreateObject("ADODB.Stream")
    oStream.Open
    oStream.Type = 1
    oStream.Write WinHttpReq.ResponseBody
    oStream.SaveToFile "C:\Temp\file1.csv", 2
    oStream.Close

    Set objStream = CreateObject("ADODB.Stream")
    objStream.Charset = "utf-8"
    objStream.Type = 2
    objStream.Open
    objStream.LoadFromFile "C:\Temp\file1.csv"
    line = objStream.ReadText(-2)
End If

Do Until objStream.EOS
(and so on, and so forth...)

Can Вы помогаете мне обойтись без ненужного процесса сохранения и загрузки файлов?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...