提取包含文件名(Microsoft Word)
当处理包含图形的长文档时,通常使用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的旧菜单界面在这里: