powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA в экселе корежит кириллицу
15 сообщений из 15, страница 1 из 1
VBA в экселе корежит кириллицу
    #39852450
Фотография badboychik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся что при выполнении макросов в анлгоязычной винде и экселе происходит превращение кириллицы в квадратики, вопросики или ромбики, когда программно пихаешь строки в контролы или сравниваешь в коде со значением из ячеек или выводишь в MsgBox
Имена контролов тоже не распознавались, но их можно заменить на английские.

В инете видел решения типа поменять nls_1252 в реестре или установить в админ.панели язык. Так вот рабочие места - в банке, никакие манипуляции с настройками системы невозможны, а язык для юникод-приложений уже стоит русский.
Можно ли как то исправить строки, я уже перепробовал разные способы StrConv и другие, не помогает.

Бред какой то, Office 2019 супернавороченный и не работает с другими языками.
Еще больше ненавижу VBA, жаль пришлось эту задачу взять. Когда уже все работает на русском экселе, наткнулся на эту подставу
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39852485
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
badboychik,
пробовали метод описанный тута
Русская кодировка в Excel
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39852486
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай конкретику.

badboychikЕще больше ненавижу VBAДело в том, что стандартный литерал типа String содержит ANSI-строку. То есть при
Код: vbnet
1.
MyVar = "АБВ"


в MyVar будет лежать не юникодовская строка.
Если это доработать на уровне языка, то пропадет совместимость с ранее написанными приложениями.

В то же время сами контролы вроде бы поддерживают юникод. Проблема возникает именно на этапе конвертации "когда программно пихаешь строки в контролы". И в то же время есть некоторое количество функций в VBA, которые позволяют работать с юникодовыми строками.
Так что нужно говорить предметно - взять тестовый пример и на нем все отладить.
Все это я описываю теоретически, практически почти не работал с этим - надо пробовать на конкретных примерах.

badboychikStrConv и другиеStrConv как раз не поможет, если нельзя поменять кодовую страницу
vbUnicode 64 Converts the string to Unicode using the default code page of the system.
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39852553
Фотография badboychik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKot,

пробовал, не помогает, у меня символы не такие, а везде разные - в ActiveX контролах квадратики, в Forms-контролах, ячейках и MsgBox - черные ромбики, а при отладке в переменных лежит что то типа значений конвертированных в юникод.
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39852564
Фотография badboychik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТак что нужно говорить предметно - взять тестовый пример и на нем все отладить.Для этого мне пришлось качать и ставить английскую винду в виртуалке и английский Excel.
Причем когда делаешь MsgBox ChrW(1070) , то выводится правильная буква "Ю"
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39852565
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в винде поставить русский язык по-умолчанию (если не установлена русская раскладка, то поставить) и для non-unicode программ выставить русский. выбрать стандартный шрифт с русской поддержкой в самом экселе в настройках (если в друг экзотический поставили какой).
затем уже создать новый эксель файл и проверить как будет работать.
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39852596
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
badboychik,

попробуйте все русские тексты для контролов и прочего брать ИЗ ЯЧЕЕК. Т.е. сделать некий скрытый лист, на котором для каждого контрола будет ячейка с нужным текстом.
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39852663
Фотография badboychik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,

думал об этом, на самый крайний случай придется хоть такие костыли городить
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39852666
Фотография badboychik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но проще уже будет приложуху на Electron написать которая прочитает исходный эксель, обработает и создаст новый
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39854959
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProДело в том, что стандартный литерал типа String содержит ANSI-строку. То есть при
Код: vbnet
1.
MyVar = "АБВ"


в MyVar будет лежать не юникодовская строка.

Неверно. Юникод там. Другое дело откуда и как ты берешь данные в строку.

Код: vbnet
1.
2.
3.
4.
    Dim s As String
    
    s = "ABC"
    Debug.Print LenB(s)
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39855161
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneв винде поставить русский язык по-умолчанию (если не установлена русская раскладка, то поставить) и для non-unicode программ выставить русский.
Золотые слова, присоединяюсь.
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39873320
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько непонятно, откуда и как именно автор программно "пихает строки в контролы"...

Офис прекрасно работает с любыми языками. Дело, как обычно, в шаловливых ручках.
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39873325
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProДело в том, что стандартный литерал типа String содержит ANSI-строку. То есть при
Код: vbnet
1.
MyVar = "АБВ"


в MyVar будет лежать не юникодовская строка.

Неправда. Строка юникодна - 2 символа на байт. Проверяется элементарно.

Код: vbnet
1.
Debug.Print Len(MyVar) 



Другое дело - что вы в нее помещаете...
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39873329
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И могут возникать проблемы при работе с неюникодными ActiveX компонентами. Особенно когда локаль не совпадает. Но тут вина не VBA, а именно самих древних компонентов, не знающими что такое юникод - при работе с ними нужно устраивать танцы с бубнами. Но лучше их изначально не использовать.
...
Рейтинг: 0 / 0
VBA в экселе корежит кириллицу
    #39873332
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, выше ошибся. Конечно, должно быть:


Debug.Print LenB(MyVar)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA в экселе корежит кириллицу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]