هنگام کار با اسناد طولانی که حاوی گرافیک هستند، استفاده از فیلد INCLUDEPICTURE برای درج تصاویر گرافیکی در سند غیرعادی نیست. اگر تعداد زیادی از این فیلدها در سند خود دارید، ممکن است بخواهید راهی برای ایجاد "لیست هنری" که شامل نام فایل های گرافیکی استفاده شده در سند باشد.
با استفاده از یک ماکرو نسبتا ساده، میتوانید از هر نمونه از فیلد INCLUDEPICTURE در سند خود عبور کرده و فقط نام فایلهای ارجاعشده را استخراج کنید. سپس میتوان آنها را به یک سند جدید اضافه کرد، به طوری که وقتی ماکرو انجام شد، سند جدید فقط حاوی فهرستی از فایلهای ارجاعشده در فیلدهای INCLUDEPICTURE باشد. در اینجا یک ماکرو وجود دارد که این کار را انجام می دهد:
Sub GetIncludePictures()
Dim oField As Field
Dim oCurrentDoc As Document
Dim oNewDoc As Document
Dim sFileName As String
Set oCurrentDoc = ActiveDocument
Set oNewDoc = Application.Documents.Add
For Each oField In oCurrentDoc.Fields
If oField.Type = wdFieldIncludePicture Then
sFileName = Replace(oField.Code, "INCLUDEPICTURE", "")
sFileName = Replace(sFileName, "MERGEFORMAT", "")
sFileName = Replace(sFileName, "*", "")
sFileName = Replace(sFileName, "d", "")
sFileName = Replace(sFileName, Chr(34), "")
sFileName = Replace(sFileName, "\", "")
sFileName = Trim(sFileName)
oNewDoc.Range.InsertAfter sFileName & vbCrLf
End If
Next oField
oNewDoc.Activate
Set oField = Nothing
Set oCurrentDoc = Nothing
Set oNewDoc = Nothing
End Sub
به استفاده از تابع Replace چندین بار در ماکرو توجه کنید. این تابع، وقوع یک رشته در رشته دیگر را با متن دیگری جایگزین می کند. ممکن است گیج کننده به نظر برسد، اما بسیار مفید است. به عنوان مثال، تصور کنید که شما یک رشته (sMyString) دارید که حاوی کاراکترهای "This is my string" است و از موارد زیر استفاده می کنید:
SMyString = Replace(sMyString, "s", "X")
این باعث می شود که هر "s" کوچک در sMyString با یک "X" بزرگ جایگزین شود. نتیجه این است که sMyString اکنون حاوی "ThiX iX my Xtring" خواهد بود.
در مورد ماکرو GetIncludePictures، چندین خط حاوی توابع Replace برای حذف تمام کاراکترهای اضافی از کد فیلد، به جز نام فایل واقعی تصویر، کار می کنند. اگر میخواهید چیز دیگری حذف شود، میتوانید خطوط بیشتری برای حذف آن عناصر اضافه کنید. (به عنوان مثال، اگر می خواهید یک نام مسیر استاندارد را برای جایی که تصاویر شما ذخیره می شود حذف کنید.)
هنگامی که ماکرو اجرا شد، تنها چیزی که در سند جدید وجود دارد باید نام تصاویر باشد، مانند مثال های زیر:
C:mypicspicture1.tif
..graphicschap01fig03.gif
اگر فقط نام فایلها را میخواستید، و نه نام مسیرهای کامل، میتوانید ماکرو GetIncludePictures را کمی تغییر دهید تا کدهایی را که مسیر را تجزیه میکنند، اضافه کنید. شما می توانید این کار را با اضافه کردن موارد زیر به ماکرو، درست بعد از خط sFileName = Trim(sFileName) انجام دهید:
While Instr(sFileName, "") > 0
sFileName = Mid(sFileName, Instr(sFileName, "") + 1)
Wend