Добрый день!
Подскажите, пожалуйста, в чем может быть причина следующей проблемки.
Моя программа работает с достаточно тяжеловесными файлами html (средний "вес" файла 30-40 МБ, но бывают и больше), которые созданы в кодировке Utf-8. Для того чтобы получить доступ к данным в VBA, мне необходимо вначале провести преобразование строк html-кода в ASCII-формат. С этой целью я использую следующий тестовый код:
Private Sub Utf8ToWin()
Dim oStream As ADODB.Stream
Dim Str As String
Dim Fsys As Scripting.FileSystemObject
Dim txtForWriting As TextStream
Set Fsys = New Scripting.FileSystemObject
Fsys.CreateTextFile "<FilePath>\WIN.html", True
Set txtForWriting = Fsys.OpenTextFile("<FilePath>\WIN.html", ForWriting)
Set oStream = New ADODB.Stream
oStream.Type = 2
oStream.Charset = "Utf-8"
oStream.Open
oStream.LoadFromFile "<FilePath>\UTF8.html"
Do Until oStream.EOS
Str = oStream.ReadText
txtForWriting.WriteLine Str
Loop
oStream.Close
txtForWriting.Close
MsgBox "Готово!"
End Sub
Код работает безупречно для сравнительно небольших объемов текста. Однако если программа начинает работать с тяжеловесными файлами, то процесс обработки "застревает" на процедуре Str = oStream.ReadText. Выполнение кода "зависает" уже на первой строке html-кода, приходится закрывать Excel через Диспетчер задач Windows.
Подскажите, пожалуйста, что в этом коде не так?.. Подозреваю, что я некорректно обращаюсь к объекту ADODB...
Заранее большое спасибо за помощь!
Подскажите, пожалуйста, в чем может быть причина следующей проблемки.
Моя программа работает с достаточно тяжеловесными файлами html (средний "вес" файла 30-40 МБ, но бывают и больше), которые созданы в кодировке Utf-8. Для того чтобы получить доступ к данным в VBA, мне необходимо вначале провести преобразование строк html-кода в ASCII-формат. С этой целью я использую следующий тестовый код:
Private Sub Utf8ToWin()
Dim oStream As ADODB.Stream
Dim Str As String
Dim Fsys As Scripting.FileSystemObject
Dim txtForWriting As TextStream
Set Fsys = New Scripting.FileSystemObject
Fsys.CreateTextFile "<FilePath>\WIN.html", True
Set txtForWriting = Fsys.OpenTextFile("<FilePath>\WIN.html", ForWriting)
Set oStream = New ADODB.Stream
oStream.Type = 2
oStream.Charset = "Utf-8"
oStream.Open
oStream.LoadFromFile "<FilePath>\UTF8.html"
Do Until oStream.EOS
Str = oStream.ReadText
txtForWriting.WriteLine Str
Loop
oStream.Close
txtForWriting.Close
MsgBox "Готово!"
End Sub
Код работает безупречно для сравнительно небольших объемов текста. Однако если программа начинает работать с тяжеловесными файлами, то процесс обработки "застревает" на процедуре Str = oStream.ReadText. Выполнение кода "зависает" уже на первой строке html-кода, приходится закрывать Excel через Диспетчер задач Windows.
Подскажите, пожалуйста, что в этом коде не так?.. Подозреваю, что я некорректно обращаюсь к объекту ADODB...
Заранее большое спасибо за помощь!