При работе с длинными документами, содержащими графику, нет ничего необычного в использовании поля 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), содержащая символы «Это моя строка», и что вы используете следующее:

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

Это приводит к замене каждой строчной буквы «s» в sMyString на прописную «X». В результате теперь sMyString будет содержать «ThiX iX my Xtring».

В случае макроса GetIncludePictures несколько строк, содержащих функции Replace, работают для удаления всех посторонних символов из кода поля, за исключением фактического имени файла изображения. Если вы хотите удалить что-то еще, вы можете добавить больше строк, чтобы удалить эти элементы. (Например, если вы хотите удалить стандартный путь к месту хранения ваших изображений.)

Когда макрос будет запущен, единственное, что в новом документе должно быть имя изображений, как в следующих примерах:

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

Если вам нужны только имена файлов, а не полные имена путей, вы можете немного изменить макрос GetIncludePictures, чтобы включить код, анализирующий путь. Вы можете сделать это, добавив в макрос сразу после строки sFileName = Trim (sFileName) следующее:

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

Wend

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (11777) применим к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365. Вы можете найти версию этого совета для старый интерфейс меню Word здесь:

link: / word-Extracting_INCLUDEPICTURE_File_Names [Извлечение имен файлов INCLUDEPICTURE].