Исправление некорректного отображения символов кириллицы в макросах VBA

Бывает, что на форме VBA некоторые надписи выводятся в неверной кодировке.

Чаще всего проблема проявляется на компьютерах, где установлена нерусскоязычная версия Windows
(на изначально русифицированной Windows, проблему ни разу не наблюдал)

Кроме того, при копировании кода из редактора VBA, с последующей вставкой в поле веб-страницы,
тоже могут появляться «кракозябры»

Причина проблемы, - используется другая кодовая страница символов.

Исправить проблему очень легко:

  • запускаете прикреплённый к статье файл 1251.reg,
    на вопрос «Вы действительно хотите добавить информацию из этого файла в реестр» отвечаете «ДА»
  • перезагружаете компьютер

 

Содержимое файла 1251.reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]

"1251"="c_1251.nls"
"1252"="c_1251.nls"
"ACP"="1251"

 

Вложения:
1251.zip329 байтов

Комментарии

Спасибо.

сработало Win 10 Pro x64

Спасибо большое. Помогло, купил ноут, установил Office. Час искал, как устранить проблему. С этим файлом все отлично стало работать

Спасибо, всё работает!

Добрый день, спасибо помогло, но частично (Названия макросов в нормальной кодировке). То что генерирует макрос - весь кириллический шрифт - кракозябры, название листа, текст на этом листе.

Спасибо за уточнения!

#3 Исправьте опечатку "ACP"="c_1251.nls" - после этого параметра потом винда не загрузится
Правильно "ACP"="1251"

PS. Для тех кто установил параметр "ACP"="c_1251.nls" и у вас отключены автосохранения реестра на хабре есть статья как "Сброс пароля, редактирование реестра Windows из Ubuntu" - в ней рассказано, как вернуть все взад

Большое человеческое вам спасибо!

Спасибо, все понятно и сразу удалось починить!

Кроме указаных выше надо в реестре еще изменить значение в АСР на 1251
Перейдите к разделу реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
и в правой части пролистайте значения этого раздела до конца Дважды нажмите по параметру ACP, установите значение 1251 (кодовая страница для кириллицы), нажмите Ок и закройте редактор реестра.
или в файл REG добавить строку
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"ACP"="1251"
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"

Огромное спасибо!! Кучу сайтов перелопатила в поисках решения, благодаря вам все исправилось за пару секунд (Win10 64, Office Pro+2019)

Спасибо большое! Столько времени убил, пока не попалась эта статья

не Работает

Спасибо тебе

Спасибо большое!!!!!!! Помогло

Отлично, заработало. Хоть я и не ожидал

не сработало Win 10 Pro x64, VBA 7.1

Помогло Win 10 64, офис про+ 2013
Cпасибо

огромное спасибо! на 10ке помогло

По qbasic ничего не могу сказать, не пользовался им никогда.
Данный способ помогает с Microsoft Office и VBA, на остальном не пробовал

Я сделал тест на qbasic,но в win 7 кракозябры на вместе русского языка
а на win xp текст в тесте показывается русский язык,что делать?

Спасибо! Работает на 7, 8, 10 +64бит

Спасибо! Сработало!!!!

Кракозябры в шапке таблицы - это совсем другая проблема
(когда кракозябры в ячейках, - это обычно открыт файл формата CSV в кодировке UTF-8, которую Excel не понимает. Это лечится перекодировкой CSV файла в текстовом редакторе Notepad++)

А описанный в статье способ касается только отображения русских букв в макросах (на формах с кнопками)

Здравствуйте. Помогите, если можете, по поиску проблем в Excel ( Office365)нашел пока только ваш коммент. Попробовал через ваш файл- не помогает ни на нерусском ноуте - ( Windows10), ни на русском - появляются "кракозяблы" вместо корректного показа шапки таблицы на английском.Заранее спасибо. Всего доброго.

Работает!

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
  ____    ____   __   __  _   _          _     
| _ \ | __ ) \ \ / / | \ | | ___ | |__
| |_) | | _ \ \ V / | \| | / _ \ | '_ \
| _ < | |_) | | | | |\ | | __/ | | | |
|_| \_\ |____/ |_| |_| \_| \___| |_| |_|
Введите код, изображенный в стиле ASCII-арт.