Extracción de nombres de archivo INCLUDEPICTURE (Microsoft Word)
Cuando se trabaja con documentos largos que contienen gráficos, no es inusual utilizar el campo INCLUDEPICTURE para insertar realmente los gráficos en el documento. Si tiene una gran cantidad de estos campos en su documento, es posible que desee una forma de crear una «lista de arte» que incluya los nombres de los archivos gráficos utilizados en el documento.
Al usar una macro relativamente simple, puede recorrer cada instancia del campo INCLUDEPICTURE en su documento y extraer solo los nombres de los archivos a los que se hace referencia. Luego, estos se pueden agregar a un nuevo documento, de modo que cuando se realiza la macro, el nuevo documento contiene solo una lista de los archivos a los que se hace referencia en los campos INCLUDEPICTURE. Aquí hay una macro que hará exactamente esto:
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
Observe el uso de la función Reemplazar varias veces en la macro. Esta función reemplaza las ocurrencias de una cadena dentro de otra cadena con otro texto. Eso puede parecer confuso, pero es muy útil. Como ejemplo, imagina que tienes una cadena (sMyString) que contiene los caracteres «Esta es mi cadena», y que usas lo siguiente:
SMyString = Replace(sMyString, "s", "X")
Esto da como resultado que cada «s» minúscula en sMyString sea reemplazada por una «X» mayúscula. El resultado es que sMyString ahora contendrá «ThiX iX my Xtring».
En el caso de la macro GetIncludePictures, las varias líneas que contienen las funciones Reemplazar funcionan para eliminar todos los caracteres extraños del código de campo, excepto el nombre de archivo real de la imagen. Si también desea eliminar algo más, puede agregar más líneas para eliminar esos elementos. (Por ejemplo, si desea eliminar un nombre de ruta estándar al lugar donde se almacenan sus imágenes).
Cuando la macro termine de ejecutarse, lo único en el nuevo documento debería ser el nombre de las imágenes, como en los siguientes ejemplos:
C:\mypics\picture1.tif ..\graphics\chap01\fig03.gif
Si solo quisiera los nombres de archivo, y no los nombres de ruta completos, podría modificar un poco la macro GetIncludePictures para incluir código que analice la ruta. Puede hacer esto agregando lo siguiente a la macro, justo después de la línea sFileName = Trim (sFileName):
While Instr(sFileName, "\") > 0 sFileName = Mid(sFileName, Instr(sFileName, "\") + 1) Wend
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.
link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
WordTips es su fuente de formación rentable en Microsoft Word.
(Microsoft Word es el software de procesamiento de texto más popular del mundo). Esta sugerencia (11777) se aplica a Microsoft Word 2007, 2010, 2013, 2016, 2019 y Word en Office 365. Puede encontrar una versión de esta sugerencia para interfaz de menú anterior de Word aquí:
link: / word-Extracting_INCLUDEPICTURE_File_Names [Extrayendo nombres de archivo INCLUDEPICTURE]
.