Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2011, 14:15   #1
Polotenchik
Форумчанин
 
Аватар для Polotenchik
 
Регистрация: 04.12.2008
Сообщений: 260
По умолчанию Макрос поиска по всему документу

Добрый день! Мне надо осуществить поиск по всему документу определенного слова и заменить его на юникод. Так как в ворде нельзя делать замену на юникод, то я пытаюсь сделать как-то так:

Код:
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "бла бла бла ("
        .Replacement.Text = "бла бла бла ()"
        .Forward = False
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.InsertSymbol Font:="Calibri", CharacterNumber:=196, Unicode:= _
        True
End Sub
Т.е. что происходит: он ищет бла бла бла (, потом курсор правее и вставляет юникод. Все работает только если бла бла бла ( встречается 1 раз. А у меня таких много и надо такое проделать с каждым по всему документу. Т.е. сделать цикл что лили. Подскажите код, пожалуйста.
Я бы изменил мир, но Бог не дает исходники...
Polotenchik вне форума Ответить с цитированием
Старый 05.06.2011, 15:51   #2
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Непонятно кто мешает вам добавить символ Ä сразу к замещающему тексту ?
Например, используя ChrW.
И делайте после этого глобальную замену ...
Aent вне форума Ответить с цитированием
Старый 05.06.2011, 15:59   #3
Polotenchik
Форумчанин
 
Аватар для Polotenchik
 
Регистрация: 04.12.2008
Сообщений: 260
По умолчанию

1. Это как ? написано же, что юникод нельзя заменять: http://support.microsoft.com/kb/214204/ru
Сказано, что юникод пожно использовать только в поле найти. Подскажите, пожалуйста, как сделать?

П.С. А, Вы не поняли! Данный символ я привел для примера. На самом деле мне нужны символы с кодом 03B7, что в юникод находятся.

2. Мне все равно надо как-то это дело зациклить. не только для этого примера. Вот еще например:
Код:
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "бугага"
        .Replacement.Text = "t"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
    Selection.Delete Unit:=wdCharacter, Count:=1
End Sub
Здесь он ищет слово бугага, выделяет его, после имитирует нажатие кнопки Home и делит, тем самым удаляя все, что перед словом бугага. Но опять же так надо проделать по всему документу.
Я бы изменил мир, но Бог не дает исходники...

Последний раз редактировалось Polotenchik; 05.06.2011 в 17:10.
Polotenchik вне форума Ответить с цитированием
Старый 05.06.2011, 19:45   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

> Так как в ворде нельзя делать замену на юникод

В диалоге может и нельзя, а в VBA можно
Запишите макрорекордером замену во всем документе, в строке замены напишите
Код:
.Replacement.Text = ChrW(&H3B7)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 05.06.2011, 20:24   #5
Polotenchik
Форумчанин
 
Аватар для Polotenchik
 
Регистрация: 04.12.2008
Сообщений: 260
По умолчанию

Казанский, это не главное! Мне все равно как-то надо зациклить. Смотрите пример выше. Помогите, очень прошу.
Я бы изменил мир, но Бог не дает исходники...
Polotenchik вне форума Ответить с цитированием
Старый 05.06.2011, 22:53   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Исходный вопрос был
Мне надо осуществить поиск по всему документу определенного слова и заменить его на юникод.
Я и предлагаю записать команду замены с нажанием кнопки "Заменить все" и подставить символ юникода в нужное место.
Зацикливание происходит в последнем операторе.
Код:
Sub Макрос1()
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "бугага"
        .Replacement.Text = ChrW(&H3B7)
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 06.06.2011, 01:38   #7
Polotenchik
Форумчанин
 
Аватар для Polotenchik
 
Регистрация: 04.12.2008
Сообщений: 260
По умолчанию

Ну а если я немного изменю исходный вопрос: надо сделать, как в 3 посте например.
Я бы изменил мир, но Бог не дает исходники...
Polotenchik вне форума Ответить с цитированием
Старый 06.06.2011, 02:29   #8
Polotenchik
Форумчанин
 
Аватар для Polotenchik
 
Регистрация: 04.12.2008
Сообщений: 260
По умолчанию

К стати не пойму чето. Например у такого кода:

номер 0398
А в макросе надо ввести H3B8, что бы получить такой символ. Это как?

П.С. Вот мне например необходимо по всему документу найти слово WIN, скопировать его отпустить курсор вниз на 2 позиции и вставить. Как это сделать для первого найденного слова WIN понятно, а если их много в документе? Как же проделать такое для всего документа?
Я бы изменил мир, но Бог не дает исходники...

Последний раз редактировалось Polotenchik; 06.06.2011 в 09:45.
Polotenchik вне форума Ответить с цитированием
Старый 07.06.2011, 01:59   #9
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

398 - прописная буква, 3B8 - строчная буква.

Придумал кривоватый способ зацикливания:

Код:
Sub Макрос2()
With Selection
    .HomeKey Unit:=wdStory
    .Find.ClearFormatting
    With .Find
        .Text = "WIN"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
    End With
    .Find.Execute
    Do
        .Copy
        .MoveDown Unit:=wdLine, Count:=2
        .Paste
        .Find.Execute
    Loop Until .Text = vbCr
End With
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 07.06.2011, 04:38   #10
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Фишка форума

Прокрутите вниз — там похожие темы.

В частности и пример цикла при поиске: http://programmersforum.ru/showthread.php?t=146988 (с комментами)
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос поиска Pecnekm Microsoft Office Excel 19 05.07.2012 08:46
Макрос поиска в MO Word! auqarius Microsoft Office Word 5 18.04.2011 02:20
макрос поиска Kraimon Microsoft Office Excel 9 15.02.2011 21:32
макрос поиска в таблицы Chubbakka Microsoft Office Excel 17 29.12.2010 01:42
[Макрос] поиск по всему документу с набором действий Polotenchik Microsoft Office Word 4 03.04.2010 07:50