Не работает поиск с заменой
От: miguel1  
Дата: 15.06.04 11:19
Оценка:
Записал макрос, который заменяет одну строку другой в документе word, содержащем надписи с текстом.
Все благополучно заменилось и в надписях и в основном документе.
Получилось вот что:
With Selection.Find
.ClearFormatting
.Text = "<%ORG>"
.Replacement.ClearFormatting
.Replacement.Text = "hello"
.Execute Replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With

Пытаюсь это запустить на другом или на том же документе с надписями...
Результат: все, что вне надписей — заменилось, а что в надписях — нет?!

Подскажите, плз, как должен выглядеть скрипт, который действительно ВСЕ заменяет.
Re: Не работает поиск с заменой
От: Elena_ Россия  
Дата: 16.06.04 20:54
Оценка:
Здравствуйте, miguel1, Вы писали:

M>Записал макрос, который заменяет одну строку другой в документе word, содержащем надписи с текстом.

M>Все благополучно заменилось и в надписях и в основном документе.
M>Получилось вот что:
M>With Selection.Find
M> .ClearFormatting
M> .Text = "<%ORG>"
M> .Replacement.ClearFormatting
M> .Replacement.Text = "hello"
M> .Execute Replace:=wdReplaceAll, Forward:=True, _
M> Wrap:=wdFindContinue
M> End With

M>Пытаюсь это запустить на другом или на том же документе с надписями...

M>Результат: все, что вне надписей — заменилось, а что в надписях — нет?!

M>Подскажите, плз, как должен выглядеть скрипт, который действительно ВСЕ заменяет.


Что-нибудь типа

    With ActiveDocument.Content.Find    ' Заменяем в основном тексте
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "<%ORG>"
        .Replacement.Text = "hello"

        .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
    End With
    
    Dim sh As Shape
    For Each sh In ActiveDocument.Shapes    ' Заменяем в надписях
        With sh.TextFrame.TextRange.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Text = "<%ORG>"
            .Replacement.Text = "hello"

            .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
        End With
    Next sh
Пользователь — друг программиста!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.