استیو سندی با متن دارد که نشان می دهد یک تصویر باید کجا قرار گیرد. این متن از نام تصویر (مانند "image01.jpg") در داخل پرانتز تشکیل شده است. او به دنبال راهی برای جایگزینی خودکار نام هر تصویر با تصویر واقعی است.
این کار را نمی توان با قابلیت Find and Replace معمولی 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:UsersStevePictures"
" 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 رخداد بعدی متن نشانگر را، در صورت وجود، پیدا می کند.
ماکرو تصاویر را به صورت درون خطی وارد می کند و هیچ پردازش اضافی روی آنها انجام نمی دهد.