Форум по VBA и MS Office

Word => Макросы в Word => Тема начата: Посетитель_20112025 от 09 марта 2026, 13:17

Название: Конвертация макросов с кириллицей из WordBasic в VBA
Отправлено: Посетитель_20112025 от 09 марта 2026, 13:17
Проблема с седой бородой, которая возникла с выходом Word'а 97. Microsoft бил себя в грудь, что макросы из WordBasic в VBA преобразуются без всяких проблем. Однако это справедливо только в том случае, если в макросах не используется кириллица в именах переменных и в именах макросов. Очевидно, конвертер макросов по умолчанию считает, что все идентификаторы в WordBasic заданы в кодовой странице CP-1252, и из русских букв мы получаем крякозябры.
Подозреваю, что есть всё-таки тайная настройка, позволяющая указать кодовую страницу для идентификаторов, используемых WordBasic, но я этого не нашёл.
В Интернете предлагается вручную переписать все переменные, содержащую кириллицу. Это хорошо советовать, когда у тебя один макрос, в котором можно быстро переименовать все переменные операциями замены. А когда у тебя сотни макросов, каждый из которых содержит кириллические переменные, задача ручной правки является неподъёмной. В результате только из-за этого приходится держать виртуальную машину с Word'ом 95, чтобы можно было пользоваться нужными программами, написанными ещё в 90-х гг.
Название: Конвертация макросов с кириллицей из WordBasic в VBA
Отправлено: Администратор от 09 марта 2026, 13:21
Я такое не знаю.
Я сталкивался с WordBasic, но он на первый взгляд работал как и новые команды.
Название: Конвертация макросов с кириллицей из WordBasic в VBA
Отправлено: Посетитель_20112025 от 09 марта 2026, 13:24
Если кириллицы нет, то и проблем практически нет...
Название: Конвертация макросов с кириллицей из WordBasic в VBA
Отправлено: Администратор от 09 марта 2026, 13:26
Но я использовал WordBasic в MS Office 2003.
Название: Конвертация макросов с кириллицей из WordBasic в VBA
Отправлено: Посетитель_20112025 от 09 марта 2026, 13:29
В Ворде 2003 (я им пользовался много лет) макросы с кириллицей из Ворда 95 тоже конвертируются с крякозябрами. И В Ворде 2010 та же история :(
Название: Конвертация макросов с кириллицей из WordBasic в VBA
Отправлено: Администратор от 09 марта 2026, 13:33
Вы хотите скопировать модули из одного места в другое?
Название: Конвертация макросов с кириллицей из WordBasic в VBA
Отправлено: Посетитель_20112025 от 09 марта 2026, 13:38
Я хочу избавиться от Ворда 95, установленного в Виртуальной машине с Windows XP (ибо Ворд 95 не устанавливается в последующих версиях Windows). Для этого нужно все макросы перенести в шаблоны, созданные в Ворде 2003-2010. И единственное, что является препятствием – то, что конвертер макросов курочит кириллицу.
Название: Конвертация макросов с кириллицей из WordBasic в VBA
Отправлено: Администратор от 09 марта 2026, 13:43
Я не разбираюсь в кодировках, не смогу помочь.
Модуль, в котором макрос, - это по сути обычный текстовый файл. Значит вам нужно просто найти в интернете конвертер текстовых файлов. Можно попробовать Notepad++, в нём есть различные кодировки. Но я не знаю, поможет ли он. Я в кодировках не разбираюсь.
Название: Конвертация макросов с кириллицей из WordBasic в VBA
Отправлено: Посетитель_20112025 от 09 марта 2026, 14:03
Для этого нужно сотни макросов из Ворда 95 экспортировать поштучно в текстовые файлы... После конвертации уже поздно что-то делать, потому что в процессе конвертации русский текст необратимо разрушается: разным русским буквам соответствуют одни и те же латинские, а вместо части русских букв появляются вопросительные знаки.
Например:
Dim Shared  Текущий_фокус$, Первая_справка
превращается:
Dim   Oaeouee_oieon$, Ia?aay_ni?aaea
Название: Конвертация макросов с кириллицей из WordBasic в VBA
Отправлено: Администратор от 09 марта 2026, 14:06
Для конвертации надо искать специалиста.
Можно же модуль экспортировать, при этом вы получите текстовый файл, в котором будет исходная кодировка. Затем ищите специалиста, который перекодирует текстовый файл в нужную кодировку.
Можно написать макрос, который будет экспортировать модули из vba-проекта в папку.