Чтение файлов формата .txt в кодировке utf-8 - VBA
Формулировка задачи:
Уважаемые!
Делаю скрипт для чтения и записи txt-файлов из Excel-вского файла по средствам VBA макросов.
Но всё упёрлось в проблему с кодировкой. Мне по умолчанию нужна UTF-8, так как она удобнее и файлы с которыми будет работать скрипт будут именно в ней.
Взял за основу для чтения и записи такой скрипт:
Проблема в том, что записывать (если понадобится) или считыватт прийдётся txt-шники с «charset = Utf-8», а Excel по-умолчанию работает с ANSI.
Из решений просмотрел в net-е. И думал нашёл функцию
Листинг программы
- 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
StrConv(s, vbUnicode)
иStrConv(s, vbFromUnicode)
Но увы... получается, что она не выполняет конвертацию в кодировку юникод и обратно. Существуют ли какие-нибудь функции для решения этой проблемы?Решение задачи: «Чтение файлов формата .txt в кодировке utf-8»
textual
Листинг программы
- 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д