Вопрос:
Здравствуйте, щас пользуюсь кодом
Sub ReadTextFileLine()
Dim a As String
Open ("w:\new 2222.txt") For Input As #1
Do Until EOF(1)
Line Input #1, a
MsgBox$ a
Loop
Close #1
End Sub
Пока кракозябры выдаёт месседж в кодировке UTF8, если читать в кодировке ANSI текстовый файл тогда всё ОК, но нужно в кодировке UTF8, как? Спасибо.
Ответы:
Тема тут была, и даже недавно вроде опять поднималась. Тут или в MSOffice.
Нашёл у экселистов, завтра попробую.
А вот функция для чтения текстового файла в заданной кодировке:
Function LoadTextFromTextFile(ByVal filename$, Optional ByVal encoding$) As String
' функция загружает текст в кодировке Charset$ из файла filename$
On Error Resume Next: Dim txt$
If Trim(encoding$) = "" Then encoding$ = "windows-1251"
With CreateObject("ADODB.Stream")
.Type = 2:
If Len(encoding$) Then .Charset = encoding$
.Open
.LoadFromFile filename$ ' загружаем данные из файла
LoadTextFromTextFile = .ReadText ' считываем текст файла
.Close
End With
End Function
это мне писать вместо
If Trim(encoding$) = "" Then encoding$ = "windows-1251"
писать
If Trim(encoding$) = "" Then encoding$ = "utf-8"
???
Это от тебя зависит
Совет - как обычно - включить мозг, а не тупо копипастить
Option Explicit
Sub ReadTextFileLine()
Dim objStream, myTXT, a, Количество_строк, li
Set objStream = CreateObject("ADODB.Stream")
objStream.Charset = "utf-8"
objStream.Open
objStream.LoadFromFile ("w:\в UTF8.txt")
myTXT = objStream.ReadText()
a = Split(myTXT, vbCrLf)
'Количество_строк = UBound(a) - LBound(a)
'MsgBox$ Количество_строк
'MsgBox$ UBound(a)
'MsgBox$ LBound(a)
'считает от нуля!!!!!
For li = LBound(a) To UBound(a)
MsgBox$ li & vbCrLf & a(li)
Next li
End Sub
Почему, то знак ┌ не читает, а знак ┐читает?
Это такие знаки в текстовых файлах, которыми таблицы рисуют
То есть знак левый служащий отображением верхнего левого угла таблицы НЕ читает, а служащий правым верхним углом таблицы читает, почему?
Пример файла выложи - самостоятельно делать лениво, а попробовать не на чем...
Akina, приаттачил
Мсгбокс значит не отображает, потому как если изменить цикл на
For li = LBound(a) To UBound(a)
MsgBox$ Len(a(li))
MsgBox$ li & vbCrLf & a(li)
Selection.TypeText Text:=a(li)
Next li
то в файле всё правильно отображает