当处理包含图形的长文档时,通常使用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

请注意在宏中多次使用“替换”功能。此函数用其他文本替换出现在另一个字符串中的一个字符串。这听起来可能令人困惑,但这非常方便。例如,假设您有一个包含字符“ This is my string”的字符串(sMyString),并且使用以下命令:

SMyString = Replace(sMyString, "s", "X")

这导致sMyString中的每个小写字母“ s”被大写字母“ X”替换。结果是sMyString现在将包含“ ThiX iX my Xtring”。

对于GetIncludePictures宏,包含“替换”功能的几行用于从域代码中删除所有多余字符,图片的实际文件名除外。如果还希望删除其他内容,则可以添加更多行以删除这些元素。 (例如,如果您要删除存储图片的标准路径名。)

当宏运行完毕后,新文档中唯一的内容应该是图片名称,如以下示例所示:

C:\mypics\picture1.tif ..\graphics\chap01\fig03.gif

如果只需要文件名而不是完整路径名,则可以稍微修改GetIncludePictures宏以包含解析出该路径的代码。您可以通过在sFileName = Trim(sFileName)行之后将以下内容添加到宏中来执行此操作:

While Instr(sFileName, "\") > 0                 sFileName = Mid(sFileName, Instr(sFileName, "\") + 1)

Wend

注意:

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

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

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(11777)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。 Word的旧菜单界面在这里: