
У меня есть макрос, который может выполнять массовый поиск и замену в нескольких документах Word. Я могу выполнять поиск и замену для изображений (в заголовке), но когда я реализовал его в своем коде макроса, он, похоже, просто игнорирует его и не находит и не заменяет никаких изображений. Я не уверен, почему так происходит, поскольку ошибок нет. Любые советы были бы очень признательны. Спасибо!!
Sub FindandReplaceTextPic()
Dim Directory As String
Dim FType As String
Dim FName As String
Directory = "C:\Users\pieria\Desktop\TempPics"
FType = "*.docx"
ChDir Directory
FName = Dir(FType)
' for each file you find, run this loop
Do While FName <> ""
' open the file
Documents.Open FileName:=Directory & "\" & FName
' search and replace the company name
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "CompanyA"
.MatchCase = True
.Replacement.Text = "CompanyB"
End With
Selection.Find.Execute Replace:=wdReplaceAll
'search and replace picture from clipboard
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^g"
.Replacement.Text = "^c"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
' save and close the current document
ActiveDocument.Close wdSaveChanges
' look for next matching file
FName = Dir
Loop
End Sub
решение1
Я бы перебрал каждый storyRange (включая заголовки) и использовал бы метод .Find диапазона вместо объекта выбора.
решение2
Как найти и заменить изображения в MS Word
MS-Word может помочь в приведенном выше сценарии. Существует автоматический способ найти все изображения в документе, а затем заменить их все новым изображением.
Обратите внимание, что этот метод найдет все изображения и заменит их все на новое. С помощью этого метода мы не можем быть избирательными в отношении изображений. Вот шаги:
- Откройте документ Microsoft Word, в котором необходимо выполнить замену.
- Вставьте новое изображение в верхнюю часть документа.
- Выберите только что вставленное изображение и нажмите Ctrl+ , Cчтобы скопировать его.
- Теперь удалите только что вставленное изображение.
- Нажмите Ctrl+ H, чтобы открыть окно «Найти и заменить».
- Введите
^g
в поле «Найти» и^c
в поле «Заменить на»
Метод поиска всех изображений и замены их на новые.
Теперь нажмите кнопку «Заменить все», чтобы увидеть волшебство!
Все изображения были заменены в MS Word.
Вы увидите, что все изображения в документе будут заменены новым изображением. Конечно, операция замены также заменит изображения, которые вы не хотели заменять. В таком случае вам может потребоваться повторно вставить изображения, которые не должны были заменяться. Этот метод полезен в сценарии, где:
- документ содержит только те изображения, которые подлежат замене
- документ содержит большое количество изображений, которые необходимо заменить, и меньшее количество изображений, которые не следует заменять
Первый сценарий прост. Во втором сценарии вы будете делать гораздо меньше ручной работы, повторно вставляя изображения, которые были заменены в качестве побочного эффекта.
Метод работает путем замены всех графических объектов (обозначенных как ^g
) содержимым буфера обмена (обозначенным как ^c
). Таким образом, по сути, вы можете заменить все изображения всем, что можно скопировать в буфер обмена.
Чтобы сохранить нетронутой нумерацию страниц документа, следует использовать новое изображение того же размера.
Надеюсь, этот совет по MS-Word был вам полезен. Если у вас есть вопросы по этой теме, смело задавайте их мне в комментариях. Я постараюсь вам помочь. Спасибо за использование TechWelkin.
Статьи по теме для получения дополнительной информации:
- MS Word: как найти и заменить числа, цифры, числительные
- Найти и заменить форматирование в MS-Word
- Множественный поиск и замена в MS Word с использованием макроса
- Заменить строку, абзац, разрыв каретки в MS Word
- Введите символ градуса ° в MS Word, HTML, Unicode
- MS Word: Как выделить вертикальную прямоугольную область