Записал макрос, который заменяет одну строку другой в документе word, содержащем надписи с текстом.
Все благополучно заменилось и в надписях и в основном документе.
Получилось вот что:
With Selection.Find
.ClearFormatting
.Text = "<%ORG>"
.Replacement.ClearFormatting
.Replacement.Text = "hello"
.Execute Replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
Пытаюсь это запустить на другом или на том же документе с надписями...
Результат: все, что вне надписей — заменилось, а что в надписях — нет?!
Подскажите, плз, как должен выглядеть скрипт, который действительно ВСЕ заменяет.
Здравствуйте, 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