Чтение файлов формата .txt в кодировке utf-8 - VBA

Узнай цену своей работы

Формулировка задачи:

Уважаемые! Делаю скрипт для чтения и записи txt-файлов из Excel-вского файла по средствам VBA макросов. Но всё упёрлось в проблему с кодировкой. Мне по умолчанию нужна UTF-8, так как она удобнее и файлы с которыми будет работать скрипт будут именно в ней. Взял за основу для чтения и записи такой скрипт:
Листинг программы
  1. Sub Test()
  2. ' Запись в файл
  3. Open "D:\tmp\file.txt" For Output As #1
  4. Print #1, "My name is Петя!"
  5. Close #1
  6. ' Чтение из файла
  7. Open "D:\tmp\file.txt" For Input As #1
  8. Dim s As String
  9. Input #1, s
  10. MsgBox s
  11. Close #1
  12. End Sub
Проблема в том, что записывать (если понадобится) или считыватт прийдётся txt-шники с «charset = Utf-8», а Excel по-умолчанию работает с ANSI. Из решений просмотрел в net-е. И думал нашёл функцию

StrConv(s, vbUnicode)

и

StrConv(s, vbFromUnicode)

Но увы... получается, что она не выполняет конвертацию в кодировку юникод и обратно. Существуют ли какие-нибудь функции для решения этой проблемы?

Решение задачи: «Чтение файлов формата .txt в кодировке utf-8»

textual
Листинг программы
  1. Sub TEST()
  2.  
  3. Dim str As String  'Текст для записи в файл.
  4. Dim pth As String  'Путь к файлу + имя.расширение
  5. Dim chI As String  'Кодировка входящего текста
  6. Dim chO As String  'Кодировка исходящего текста
  7.  
  8. ' Значения по умолчанию
  9. str = "Текстовый файлик"
  10. pth = "E:\TMP\1.txt"
  11. chI = "UTF-8"
  12. chO = "UTF-8"
  13.  
  14.  
  15. ' Берём путь к файлу из соседней ячейки справа от выделенной
  16.  If Len(ActiveCell.Offset(0, 1).Value) Then pth = ActiveCell.Offset(0, 1).Value
  17.  
  18.  
  19.   str = ActiveCell.Text
  20.   ActiveCell.Value = exChangeContent(str, pth, chI, chO)
  21.  
  22. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы