史蒂夫(Steve)的文档带有文字,该文字指示应放置图像的位置。此文本包含图像名称(例如“ 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的内容将匹配单词“ image”

中的任何括号。后跟两个字符(例如01、02、97或XY)和“ .jpg”

延期。

Selection对象的Find方法对标记文本的第一次出现实施实际的Find操作。如果找到,则While …​ Wend循环中的代码开始起作用。这将获取文件名并将其分配给sFigName变量。然后删除找到的标记文本,并在其位置插入一个嵌入式图像。最后,Selection.Find.Execute行查找标记文本的下一个匹配项(如果有)。

宏将内联插入图像,并且不对其进行任何其他处理。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)上描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(10135)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。