|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
Столкнулся что при выполнении макросов в анлгоязычной винде и экселе происходит превращение кириллицы в квадратики, вопросики или ромбики, когда программно пихаешь строки в контролы или сравниваешь в коде со значением из ячеек или выводишь в MsgBox Имена контролов тоже не распознавались, но их можно заменить на английские. В инете видел решения типа поменять nls_1252 в реестре или установить в админ.панели язык. Так вот рабочие места - в банке, никакие манипуляции с настройками системы невозможны, а язык для юникод-приложений уже стоит русский. Можно ли как то исправить строки, я уже перепробовал разные способы StrConv и другие, не помогает. Бред какой то, Office 2019 супернавороченный и не работает с другими языками. Еще больше ненавижу VBA, жаль пришлось эту задачу взять. Когда уже все работает на русском экселе, наткнулся на эту подставу ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 03:56 |
|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
Давай конкретику. badboychikЕще больше ненавижу VBAДело в том, что стандартный литерал типа String содержит ANSI-строку. То есть при Код: vbnet 1.
в MyVar будет лежать не юникодовская строка. Если это доработать на уровне языка, то пропадет совместимость с ранее написанными приложениями. В то же время сами контролы вроде бы поддерживают юникод. Проблема возникает именно на этапе конвертации "когда программно пихаешь строки в контролы". И в то же время есть некоторое количество функций в VBA, которые позволяют работать с юникодовыми строками. Так что нужно говорить предметно - взять тестовый пример и на нем все отладить. Все это я описываю теоретически, практически почти не работал с этим - надо пробовать на конкретных примерах. badboychikStrConv и другиеStrConv как раз не поможет, если нельзя поменять кодовую страницу vbUnicode 64 Converts the string to Unicode using the default code page of the system. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 08:42 |
|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
HandKot, пробовал, не помогает, у меня символы не такие, а везде разные - в ActiveX контролах квадратики, в Forms-контролах, ячейках и MsgBox - черные ромбики, а при отладке в переменных лежит что то типа значений конвертированных в юникод. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 10:29 |
|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
авторТак что нужно говорить предметно - взять тестовый пример и на нем все отладить.Для этого мне пришлось качать и ставить английскую винду в виртуалке и английский Excel. Причем когда делаешь MsgBox ChrW(1070) , то выводится правильная буква "Ю" ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 10:42 |
|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
в винде поставить русский язык по-умолчанию (если не установлена русская раскладка, то поставить) и для non-unicode программ выставить русский. выбрать стандартный шрифт с русской поддержкой в самом экселе в настройках (если в друг экзотический поставили какой). затем уже создать новый эксель файл и проверить как будет работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 10:42 |
|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
badboychik, попробуйте все русские тексты для контролов и прочего брать ИЗ ЯЧЕЕК. Т.е. сделать некий скрытый лист, на котором для каждого контрола будет ячейка с нужным текстом. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 11:54 |
|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
The_Prist, думал об этом, на самый крайний случай придется хоть такие костыли городить ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 13:03 |
|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
но проще уже будет приложуху на Electron написать которая прочитает исходный эксель, обработает и создаст новый ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2019, 13:05 |
|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
Shocker.ProДело в том, что стандартный литерал типа String содержит ANSI-строку. То есть при Код: vbnet 1.
в MyVar будет лежать не юникодовская строка. Неверно. Юникод там. Другое дело откуда и как ты берешь данные в строку. Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2019, 09:39 |
|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
Konst_Oneв винде поставить русский язык по-умолчанию (если не установлена русская раскладка, то поставить) и для non-unicode программ выставить русский. Золотые слова, присоединяюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2019, 14:07 |
|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
Несколько непонятно, откуда и как именно автор программно "пихает строки в контролы"... Офис прекрасно работает с любыми языками. Дело, как обычно, в шаловливых ручках. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 13:08 |
|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
Shocker.ProДело в том, что стандартный литерал типа String содержит ANSI-строку. То есть при Код: vbnet 1.
в MyVar будет лежать не юникодовская строка. Неправда. Строка юникодна - 2 символа на байт. Проверяется элементарно. Код: vbnet 1.
Другое дело - что вы в нее помещаете... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 13:15 |
|
VBA в экселе корежит кириллицу
|
|||
---|---|---|---|
#18+
И могут возникать проблемы при работе с неюникодными ActiveX компонентами. Особенно когда локаль не совпадает. Но тут вина не VBA, а именно самих древних компонентов, не знающими что такое юникод - при работе с ними нужно устраивать танцы с бубнами. Но лучше их изначально не использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 13:19 |
|
|
start [/forum/topic.php?fid=60&msg=39852666&tid=2154872]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 137ms |
0 / 0 |