У Стива есть документ с текстом, который указывает, где следует разместить изображение. Этот текст состоит из названия изображения (например, «image01.jpg»)

в скобках. Он ищет способ автоматически заменять каждое имя изображения фактическим изображением.

Это невозможно сделать с помощью обычных возможностей Word «Найти и заменить», но это можно сделать с помощью макроса. Идея состоит в том, чтобы найти в документе текст маркера (имена изображений) и, если он найден, захватить имя изображения и заменить текст маркера фактическим изображением. Вот макрос, который реализует эти шаги:

Sub ReplaceImages()

Dim sMarkerText As String     Dim sFigName As String     Dim sFigPath As String

' Change to the path to the pictures, with a trailing slash.

sFigPath = "C:\Users\Steve\Pictures\"



' Change to marker text. Can include wildcards.

sMarkerText = "(image??.jpg)"



' Search through document for marker text     Selection.Find.ClearFormatting     With Selection.Find         .Text = sMarkerText         .Replacement.Text = ""

.Forward = True         .Wrap = wdFindContinue         .Format = True         .MatchCase = False         .MatchWholeWord = False         .MatchWildcards = False         .MatchSoundsLike = False         .MatchAllWordForms = False     End With     Selection.Find.Execute     While Selection.Find.Found         ' Found a match, so grab name         ' Need to adjust for parens in marker text         sFigName = Mid(Selection, 2, Len(Selection) - 2)



' Delete the marker text         Selection.Delete

' Insert the picture         Selection.InlineShapes.AddPicture FileName:= _           sFigPath & sFigName, LinkToFile:=False, _           SaveWithDocument:=True         Selection.Find.Execute     Wend End Sub

В коде макроса необходимо изменить две вещи: значения, хранящиеся в переменных sFigPath и sMarkerText. Содержимое sMarkerText, как показано, будет соответствовать любым скобкам, в которых есть слово «изображение»

за ним следуют два символа (например, 01, 02, 97 или XY) и «.jpg»

расширение.

Метод Find объекта Selection реализует фактическое действие Find для самого первого появления текста маркера. Если он найден, то в дело вступает код цикла While …​ Wend. Это захватывает имя файла и присваивает его переменной sFigName. Затем найденный текст маркера удаляется и на его место вставляется встроенное изображение. Наконец, строка Selection.Find.Execute находит следующее вхождение текста маркера, если таковой имеется.

Макрос вставляет изображения в строку и не выполняет с ними никакой дополнительной обработки.

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (10135) применим к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365.