Страницы: 1
RSS
Замена "странных" символов
 
Доброго времени суток, Планетяне!

Не первый год довольно плотно работаю с Excel, но не перестаю удивляться разным "подводным камням" в выгрузках и при копипасте.
Столкнулся вот с какой "фишкой": при копипасте с сайта типоразмеров случайно заметил, что знак "×" - это не русская и не английская буква, а знак вопроса (см. скрин)
"Найти и Заменить" его находит и меняет, а, если действие этого инструмента записать макрорекордером и запустить, как макрос, то меняет все символы.

Макрорекордер: Selection.Replace What:="?", Replacement:="х", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Как бороться?
UPD: найдено отличие в коде AscW: у странного символа он 215, а у вопроса такой же, как и Acs - 63 (см. скрин)
Отображение кодов символов для текста выделенной ячейки
Скрины
Изменено: Jack Famous - 09.06.2021 11:42:39
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Попробуйте What:="~?"
 
Hugo, попробовал сразу))) он тогда ищет знаки вопроса (а их типа нет) — не меняет

Интересно несколько моментов:
1.Почему инструмент меняет, а его код VBA — нет
2. Почему в VBA этот символ - как знак вопроса, а на листе нет (не шрифт - пробовал разные)
Изменено: Jack Famous - 05.03.2018 13:12:04
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Доброе время суток
Цитата
Jack Famous написал:
а его код VBA — нет
VBA как язык поддерживает Unicode, а вот его редактор - нет, от этого и проблема. Используйте
Код
What:=ChrW$(&H00D7)

Успехов.
Изменено: Андрей VG - 05.03.2018 13:15:54
 
Jack Famous, Вопрос то в чем, ведь не только первый год с экселем, так и не первый день на форуме. Боротся с чем? Ну у вас юникодный символ ×
используйте не "?", а ChrW(),  с соотвтевующим кодом.
По вопросам из тем форума, личку не читаю.
 
Андрей VG, спасибо большое!

БМВ, Андрей VG, я нашёл отличие по коду AscW (обновил шапку), но как его перевести для ChrW?… Или как его вообще определить?
Изменено: Jack Famous - 05.03.2018 13:20:21
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
А как вы этот код для ChrW определили?
часто пользую ресурс, выручал неоднократно
https://unicode-table.com/ru/search/?q=%C3%97
По вопросам из тем форума, личку не читаю.
 
БМВ, оооооо))) вот это вещь!))) спасибо!
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
но как его перевести для ChrW?
-
Код
ChrW(215)
:)
В Вашем файле у меня так заменяет.
А про "?" я в начале не понял - в файле их не увидел...
Изменено: Hugo - 05.03.2018 13:25:25
 
Hugo, спасибо вам! я уже тоже допёр методом перебора :D  ChrW(215) - работает. Получается, что, зная код AscW можно напрямую его точечно менять через ChrW  :D

Всем большое спасибо - буду сюда кидать различные "аномалии" ;)
Изменено: Jack Famous - 05.03.2018 13:29:54
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ещё один такой же символ — Chr(63)/ChrW(180) — "´". Выглядит как умножение или апостороф…
Заменяется без проблем кодом VBA также, как предыдущий.
Изменено: Jack Famous - 19.03.2018 12:00:46
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Реанимирую тему, возникла схожая проблема при работе макроса по созданию папок по именам организаций с выгрузки из сайта (выделены красным). Проблема в символах Й, й
Пытался через ChrW эти знаки убрать по коду, добавив в макрос, но пока безуспешно, может у кого есть идеи?
 
Zealot92,
Это не то, чем кажется
tx=Replace(tx,И & ChrW(774),"Й")
Изменено: Jack Famous - 09.06.2021 11:37:39
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Кайф, спасибо, а что за программа такая?
 
Zealot92, добавил в шапку. Пожалуйста  ;)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Код
Function Replace_symbols(ByVal txt As String) As String
    St$ = "~!@/\#$%^&*=|`"""
        For i% = 1 To Len(St$)
        txt = Replace(txt, Mid(St$, i, 1), "_")
        Next
    txt = Replace(txt, ChrW(1048) & ChrW(774), "Й")
    Replace_symbols = txt
End Function
Итоговый вариант функции замены, вдруг кому понадобится , вариант "И & ChrW(774)" не прокатил, получилась такая вот шляпа, но за наводку спасибо
Изменено: Zealot92 - 09.06.2021 12:45:18
 
Редактор VBE в таких случаях только вводит в заблуждение, поскольку работает с номерами символов в кодовой таблице (Windows-1251), а не с Unicode.

Буква "И" c последующим символом U+0306  ̆  (Комбинируемое бреве (бревис, кратка), десятичное значение 774) с точки зрения юникода эквивалентна "Й". Но мало кто (включая Excel) эту точку зрения разделяет. Поскольку в таблицах юникода есть персональное место для "Й", вряд ли запись в виде двух символов оправдана.
Изменено: sokol92 - 09.06.2021 17:32:49
Владимир
 
sokol92, благодарю за ценную информацию!  :idea:
А какая собака программа так выгружает данные?  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
А какая собака программа так выгружает данные?
В моем случае это была выгрузка с сайта обычная, правда выгружается она в старом формате xls (тип -Лист ME 97-2003), приходится преобразовывать чтобы можно было работать, мб из-за этого была проблема, поясните кто-нить, то есть U+0306 и 774 это одинаковая запись символа ̆  просто в разных системах?  https://unicode-table.com/ru/0306/
и еще вопрос, почему в самой ф-ии ChrW надо обращаться к  U+0306 в формате ChrW$(&H0306), мб прозвучит тупо, но где + и почему ставится H& ?
Изменено: Zealot92 - 10.06.2021 09:52:35
Страницы: 1
Наверх