For Each Key In dic.Keys
newText = dic.Item(Key)
objWrd.Selection.EndKey 'т.к. странице лежат в конце, начинаем поиск оттуда
With objWrd.Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = Key
.Replacement.Text = newText
.Forward = True
.Wrap = 2
.Format = False
.MatchCase = False
.MatchWholeWord = False
End With
objWrd.Selection.Find.Execute , , , , , , , , , , 1
objWrd.Selection.Font.Color = -587137025
Next
Selection
. Код для VBA:Option Explicit
'123456789012345678901234567890123456h8nor@ya567890123456789012345678toster56789
Sub Replacement_tags()
Dim Content_Find As Find ' Объект Find (в VBScript переменные объявляются без указания типа)
Const wdFindContinue = 2 ' для VBScript
Const wdReplaceAll = 1 ' для VBScript
' Set objWrd = CreateObject("Word.Application") ' В MS Word объявлять не нужно
' в VBScript всё равно придётся открывать файл, так что objDoc = objWrd.ActiveDocument
' Set objDoc = objWrd.Documents.Open(Filename:="C:\FullName.doc")
Set Content_Find = ActiveDocument.Content.Find ' в VBScript - objDoc.Content.Find
With Content_Find ' Найти метку
.ClearFormatting: .Replacement.ClearFormatting ' Очистить формат
.MatchWildcards = False ' ВАЖНО! Отключить Подстановочные знаки
.Replacement.Font.Color = wdColorAutomatic ' wdColorAutomatic = -587137025
.Text = "p***p": .Replacement.Text = "newText"
.Execute2007 Forward:=True, Replace:=wdReplaceAll, Wrap:=wdFindContinue
End With
' Подсветить ".Text" в документе Word 2007+ (визуальная отладка)
With Content_Find ' Отменяется после метода "Execute" или "ClearHitHighlight"
.Parent.HomeKey wdStory ' wdStory = 6
.HitHighlight .Text, wdColorTan ' wdColorTan = &H99CCFF
End With
End Sub
.Selection.EndKey
не нужен, т.к. в вашем примере указана замена по всему тексту (.Replace = 1
), а поиск начинается с позиции курсора, т.е. сначала. Цикла поиска по тексту нет, так что .Wrap
можно не использовать.objWrd.ScreenUpdating = False
.