12 / 17 / 2
Регистрация: 02.11.2015
Сообщений: 222
|
||||||
1 | ||||||
Чтение файлов формата .txt в кодировке utf-809.03.2017, 14:34. Показов 27844. Ответов 15
Уважаемые форумчане!
Делаю скрипт для чтения и записи txt-файлов из Excel-вского файла по средствам VBA макросов. Но всё упёрлось в проблему с кодировкой. Мне по умолчанию нужна UTF-8, так как она удобнее и файлы с которыми будет работать скрипт будут именно в ней. Взял за основу для чтения и записи такой скрипт:
Из решений просмотрел в net-е. И думал нашёл функцию StrConv(s, vbUnicode) и StrConv(s, vbFromUnicode) Но увы... получается, что она не выполняет конвертацию в кодировку юникод и обратно. Существуют ли какие-нибудь функции для решения этой проблемы?
0
|
09.03.2017, 14:34 | |
Ответы с готовыми решениями:
15
Чтение .txt файла, сохраненного в кодировке UTF-8 Объединить несколько TXT-файлов в кодировке UTF-8 с BOM Создание и чтение файлов формата .txt Считывание txt в кодировке utf-8 |
61 / 60 / 16
Регистрация: 13.02.2017
Сообщений: 172
|
|||||||||||
09.03.2017, 15:48 | 2 | ||||||||||
1
|
12 / 17 / 2
Регистрация: 02.11.2015
Сообщений: 222
|
||||||
09.03.2017, 21:37 [ТС] | 3 | |||||
спасибо за помощь, к сожалению при испытании этого кода, ничего не получилось:
Я вот ещё думаю... Сам редактор VBA не может настраиваться, как скажем другие текстовые редакторы скажем в Notepad++ можно же кодировку менять.. Хотя конечно врятли... Просто заметил, что даже когда просто копируешь из VBA-редактора текст в буфер и вставляешь в блокнот, то сразу вылезают кракозяблы.?!
0
|
61 / 60 / 16
Регистрация: 13.02.2017
Сообщений: 172
|
||||||
09.03.2017, 21:52 | 4 | |||||
Попробуйте поменять местами
0
|
12 / 17 / 2
Регистрация: 02.11.2015
Сообщений: 222
|
|
09.03.2017, 22:23 [ТС] | 5 |
пробовал местами менять, и тоже в разных вариантах исходный текст писал (UTF8 и 1251), но при каждом включении макроса бьются русские символы, а иногда и английские... попробую наверное ещё с iconv() функцией скомбинировать код, она тоже как то на кодировке влияет, правда коряво и не так.. токо синтаксис с объектами для меня сложноват..
0
|
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
10.03.2017, 07:14 | 6 |
Eskander88, если файл в кодировке UTF-8, то функция ChangeFileCharset работает хорошо, я проверил.
Менять параметры местами не нужно. Естественно, что применять эту функцию к файлу нужно только один раз.
0
|
185 / 183 / 31
Регистрация: 11.10.2016
Сообщений: 599
|
|
10.03.2017, 09:19 | 7 |
чтобы не было кракозябров, нужно перед копированием всего лишь перейти на русскую раскладку клавиатуры
0
|
12 / 17 / 2
Регистрация: 02.11.2015
Сообщений: 222
|
||||||
10.03.2017, 17:20 [ТС] | 8 | |||||
.. ещё раз протестил. Разобрался в чём дело. Проверил логику приложения, оказывается допустил банальную ошибку.
Единственное какой для меня недостаток, то что для меня данная синтаксическая конструкция малость гоняет в ступор. Так как считывание и запись происходит в теле функции, при этом работа происходит с объектом. Это конечно хоть, что-то, чтение и запись происходит, но от этого легче не становится. Нужно же получить данные в переменную а потом обработать с помощью имеющихся процедур, прийдётся огород городить или в справочник погрузится.
0
|
12 / 17 / 2
Регистрация: 02.11.2015
Сообщений: 222
|
||||||
10.03.2017, 17:34 [ТС] | 10 | |||||
я в общем то и полагал так делать, вроде
Но готовой функции как таковой нет, пока имеем такой предложенный вариант
0
|
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
||||||
10.03.2017, 17:41 | 11 | |||||
На вскидку могу предложить что-то подобное.
Но с первым байтом нужно что-то делать.
1
|
12 / 17 / 2
Регистрация: 02.11.2015
Сообщений: 222
|
|
10.03.2017, 17:48 [ТС] | 12 |
.. а если использовать вариант, что предложил smeckoi77? Только добавить возможность возврата свойства объекта - имею ввиду переменную с записанными в неё данными из файла. У меня к сожалению навыков по VBA маловато, не могу вернуть значение из функции от объекта, как я понял там должен быть специальный метод д/реализации. Использовать функции getFile и putFile на базе ChangeFileCharset
0
|
61 / 60 / 16
Регистрация: 13.02.2017
Сообщений: 172
|
||||||
10.03.2017, 17:52 | 13 | |||||
0
|
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
|
|||||||||||
11.03.2017, 14:16 | 14 | ||||||||||
Кривой вариант немного
Этот вариант более эстетичный
0
|
12 / 17 / 2
Регистрация: 02.11.2015
Сообщений: 222
|
|||||||||||
12.03.2017, 15:57 [ТС] | 15 | ||||||||||
воспользовавшись примером, получилось нечто такое..
Функция для обмена данными с файлом
скрипт рабочий. В принципе необходимые задачи решает. Только получается что «On Error Resume Next: Err.Clear» вроде как в холостую, хотя по идеи надо как то обработать ошибку..
0
|
12 / 17 / 2
Регистрация: 02.11.2015
Сообщений: 222
|
||||||
20.04.2017, 18:40 [ТС] | 16 | |||||
Переписал макрос. Сделал пример только для считывания.
Выглядит следующим образом:
Этот EXCEL оказывается ещё тот русофоб ))), причём файлы с директорией типа «D:\tmp\§patagraph.txt» он считывает! Подскажите пожалуйста.. Как сделать, чтобы макрос понимал в адресе к файлу не только UTF-8 в тексте файла, но и русскоязычные символы? Или в чём хотя бы может быть дело? варианты пробовал вместо «D:\tmp\русский.txt» поставить так «D:\tmp\ðóññêèé.txt» — ноль реакции Добавлено через 7 минут Тут ещё такой полтергейст для путей с кириллицей! Если файл существует, то скрипт вернёт его путь, - а если нет, - то сделает ячейку пустой?
0
|
20.04.2017, 18:40 | |
20.04.2017, 18:40 | |
Помогаю со студенческими работами здесь
16
Чтение файла в кодировке UTF-8 InputStreamReader Чтение файла в кодировке utf-8 и вывод в консоль Преобразовать текст из *.txt (в любой кодировке) в картинку формата *.bmp Чтение и обработка TXT формата Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |