Извлечение имен файлов INCLUDEPICTURE (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
Обратите внимание на использование функции 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]
.