Чтение файлов формата .txt в кодировке utf-8 - VBA
Формулировка задачи:
Уважаемые форумчане!
Делаю скрипт для чтения и записи txt-файлов из Excel-вского файла по средствам VBA макросов.
Но всё упёрлось в проблему с кодировкой. Мне по умолчанию нужна UTF-8, так как она удобнее и файлы с которыми будет работать скрипт будут именно в ней.
Взял за основу для чтения и записи такой скрипт:
Sub Test() ' Запись в файл Open "D:\tmp\file.txt" For Output As #1 Print #1, "My name is Петя!" Close #1 ' Чтение из файла Open "D:\tmp\file.txt" For Input As #1 Dim s As String Input #1, s MsgBox s Close #1 End SubПроблема в том, что записывать (если понадобится) или считыватт прийдётся txt-шники с «charset = Utf-8», а Excel по-умолчанию работает с ANSI. Из решений просмотрел в net-е. И думал нашёл функцию StrConv(s, vbUnicode) и StrConv(s, vbFromUnicode) Но увы... получается, что она не выполняет конвертацию в кодировку юникод и обратно. Существуют ли какие-нибудь функции для решения этой проблемы?
Код к задаче: «Чтение файлов формата .txt в кодировке utf-8 - VBA»
Sub TEST() Dim str As String 'Текст для записи в файл. Dim pth As String 'Путь к файлу + имя.расширение Dim chI As String 'Кодировка входящего текста Dim chO As String 'Кодировка исходящего текста ' Значения по умолчанию str = "Текстовый файлик" pth = "E:\TMP\1.txt" chI = "UTF-8" chO = "UTF-8" ' Берём путь к файлу из соседней ячейки справа от выделенной If Len(ActiveCell.Offset(0, 1).Value) Then pth = ActiveCell.Offset(0, 1).Value str = ActiveCell.Text ActiveCell.Value = exChangeContent(str, pth, chI, chO) End Sub
5 голосов, оценка 3.400 из 5
СОХРАНИТЬ ССЫЛКУ