Я с некоторым успехом читаю и пишу файлы utf-8 в своем приложении VBA, используя ADODB.Stream
.Единственная реальная проблема заключается в том, что ADODB.Stream
довольно медленный по сравнению с собственным чтением файлов VBA.Обычно я бы использовал стандартные функции VBA Open
, Input
, Print
, Close
и т. Д., Которые достаточно быстрые.Я не пробовал ни одного API-интерфейса Windows или решения DLL, так как существует тенденция, правильная или неправильная, отключать вызовы API, библиотеки DLL и т. Д.
Я использую это для редактирования XML-файлов Open Office группыдокументов, прежде чем объединить их вместе.
Вот мои функции чтения и записи для файлов utf-8.Они были скопированы из Интернета.
Public Function readUtf8(fn As String) As String
Dim stream As ADODB.stream: Set stream = New ADODB.stream
stream.Charset = "utf-8"
stream.Open
On Error GoTo nofile
stream.LoadFromFile fn
readUtf8 = stream.ReadText() & ""
stream.Close
Set stream = Nothing
Exit Function
nofile:
stream.Close
Set stream = Nothing
readUtf8 = ""
End Function
Функция записи более или менее похожа на обратную.
Public Function writeUtf8(fn As String, txt As String) As Integer
Dim stream As ADODB.stream: Set stream = New ADODB.stream
stream.Charset = "utf-8"
stream.Open
stream.WriteText txt
stream.SaveToFile fn
stream.Close
Set stream = Nothing
writeUtf8 = 0
End Function
Есть ли более быстрая альтернатива ADODB.Stream
?