Автор Тема: Word VBA: Замена неправильного дефиса  (Прочитано 2063 раз)

Anton

  • Гость
Добрый день!

У меня есть текст, с помощью макроса выполняю замену с помощью подстановочных знаков. Меняю дефисы на неразрывные. Дефис, как известно, это ^0045. Но вдруг в тексте встретились другие какие-то дефисы. Как найти код Chrw этого символа? Пример приложил - в первом случае дефис неправильный.
Вообще, в идеале, хотел найти макрос, который определяет код Chrw любого символа, но не нашел, к сожалению.

[вложение удалено администратором]

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Word VBA: Замена неправильного дефиса
« Ответ #1 : 29 Август 2016, 20:07 »
Юникод-код символа можно узнать так. В ворд-файле выделите символ, у которого нужно узнать юникод-код, - перейдите в VBA и отобразите окно: View - Immediate Window, - вставьте туда код, который ниже, и нажмите Enter:
Print AscW(Selection.Text)

Anton

  • Гость
Re: Word VBA: Замена неправильного дефиса
« Ответ #2 : 29 Август 2016, 21:05 »
Да, так получается узнать, спасибо.

Anton

  • Гость
Re: Word VBA: Замена неправильного дефиса
« Ответ #3 : 29 Август 2016, 21:26 »
А вот на другом примере не работает. Код неправильно определяет. Пример прикрепил.

[вложение удалено администратором]

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Word VBA: Замена неправильного дефиса
« Ответ #4 : 29 Август 2016, 21:45 »
Да, в этом случае AscW возвращает 40 и метод Find не находит.
Тогда пробуйте так узнавать юникод-код символа. Скопируйте символ, для которого нужно узнать юникод-код, отобразите диалог "Найти и заменить" и вставьте скопированный символ в поле "Найти" - включите запись макросов и щёлкните "Найти" - остановите запись макросов и используйте юникод-код из записанного макроса.

Anton

  • Гость
Re: Word VBA: Замена неправильного дефиса
« Ответ #5 : 29 Август 2016, 22:21 »
Спасибо. Ну так да, нашел. Но метод, конечно... Неужели для всего могучего VBA не существует функции для определения правильного кода Chrw? Тут хоть он у меня как иероглиф какой-то отображается, а на днях, помню, какой-то символ вообще никак при вставке не отображался.

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Word VBA: Замена неправильного дефиса
« Ответ #6 : 29 Август 2016, 22:32 »
Не знаю, может быть и есть в VBA что-то ещё.

Тут нужно различать:
1) сам VBA;
2) возможности программы "Word".

Сам VBA не смог определить код символа, а программа "Word" смогла с помощью метода "Find".

Оффлайн Посетитель 29.10.2022

  • Посетитель форума
  • Сообщений: 12
Re: Word VBA: Замена неправильного дефиса
« Ответ #7 : 11 Ноябрь 2022, 14:28 »
Print AscW(Selection.Text) пишу в Immediate Window выделяю символ сперва. Символ, который выделяю ККЯ совместимый Идеограф-2F804 你. Вот что потом Print AscW(Selection.Text)
-10114 .
Но как такой код потом использовать? ChrW(-10114) так же не пойдет. Вот так тоже не хочет ChrW(194564). Как тогда быть?


Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Word VBA: Замена неправильного дефиса
« Ответ #8 : 11 Ноябрь 2022, 14:35 »
Можете выложить файл, в котором будет этот символ?

Оффлайн Посетитель 29.10.2022

  • Посетитель форума
  • Сообщений: 12
Re: Word VBA: Замена неправильного дефиса
« Ответ #9 : 11 Ноябрь 2022, 14:39 »
Вот файл с символом

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Word VBA: Замена неправильного дефиса
« Ответ #10 : 11 Ноябрь 2022, 14:57 »
Цитата:
ChrW(-10114) так же не пойдет.

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

Оффлайн Посетитель 29.10.2022

  • Посетитель форума
  • Сообщений: 12
Re: Word VBA: Замена неправильного дефиса
« Ответ #11 : 11 Ноябрь 2022, 15:24 »
Если ChrW(-10114), то вот что а если скопировать и вставить при записи макроса  то вот как ChrW(55422) & ChrW(56324). Как тогда узнать что если символ 194564, то оно вот как ChrW(55422) & ChrW(56324)

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Word VBA: Замена неправильного дефиса
« Ответ #12 : 11 Ноябрь 2022, 15:48 »
Цитата:
а если скопировать и вставить при записи макроса

Я при записи макроса скопировал и вставил, макрорекордер не использовал ChrW.
Как вы копируете и вставляете во время записи макроса?

Оффлайн Посетитель 29.10.2022

  • Посетитель форума
  • Сообщений: 12
Re: Word VBA: Замена неправильного дефиса
« Ответ #13 : 11 Ноябрь 2022, 18:26 »
Я копирую из ворда символ, запускаю запись макроса потом найти и заменить пишу найти пробел заменить на пробел и вставляю из буфера обмена символ. Потом останавливаю запись макроса и смотрю результат, а там
 With Selection.Find
        .Text = " "
        .Replacement.Text = " " & ChrW(55422) & ChrW(56324)
        .Forward = True
Этот символ получается состоит из двух. Как то так
Делаю запись макроса и делаю Alt+194564  получается все равно    Selection.TypeText Text:=ChrW(55422) & ChrW(56324)
Каким  образом можно узнать как так? 

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Word VBA: Замена неправильного дефиса
« Ответ #14 : 11 Ноябрь 2022, 19:24 »
Вы хотите использовать этот символ в Найти и заменить? Или нет?