Cuando inserta imágenes directamente en un documento de Word, el tamaño del archivo crece rápidamente, lo que dificulta compartirlo o colaborar. Las imágenes incrustadas almacenan los datos completos de la imagen dentro del archivo .docx, mientras que las imágenes vinculadas hacen referencia a un archivo externo y mantienen el documento ligero. Este artículo explica cómo convertir cada imagen incrustada en una imagen vinculada mediante una macro de VBA, ahorrando espacio en disco y mejorando el rendimiento del documento. Aprenderá el código exacto que debe ejecutar, los requisitos previos y qué hacer si falla la vinculación.
Puntos clave: Convertir imágenes incrustadas en imágenes vinculadas mediante VBA
- Macro de VBA en Word: Automatiza el proceso de reemplazar cada imagen incrustada por una versión vinculada utilizando la misma ruta del archivo de imagen.
- Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Habilitar todas las macros: Necesario para ejecutar la macro de VBA sin advertencias de seguridad.
- Método InlineShapes.AddPicture con LinkToFile:=True: Crea una imagen vinculada que se actualiza cuando cambia el archivo de origen.
Cómo funcionan las imágenes incrustadas y vinculadas en Word
Cuando inserta una imagen yendo a Insertar > Imágenes > Este dispositivo, Word incrusta los datos completos de la imagen en el documento. El tamaño del documento aumenta aproximadamente el tamaño de cada imagen. Esto hace que enviar por correo electrónico o cargar el archivo sea más lento, y editar la imagen original más tarde no actualiza la copia en Word.
Una imagen vinculada, por otro lado, almacena solo la ruta del archivo de la fuente de la imagen. El documento permanece pequeño y, si modifica el archivo de imagen de origen, Word puede actualizar la imagen vinculada automáticamente (siempre que se mantenga el vínculo). La contrapartida es que el archivo de imagen debe permanecer en la misma ubicación; si lo mueve, el vínculo se rompe.
Word no ofrece un comando integrado para convertir por lotes imágenes incrustadas en imágenes vinculadas. Debe usar una macro de VBA para reemplazar cada forma incrustada por una versión vinculada. La macro lee la ruta del archivo de imagen original de la imagen incrustada (si está disponible), elimina la forma incrustada e inserta una nueva imagen vinculada en la misma posición.
Requisitos previos para ejecutar la macro
Antes de ejecutar la macro de conversión, confirme lo siguiente:
- Todas las imágenes incrustadas se insertaron originalmente desde archivos en su equipo o una unidad de red. Las imágenes copiadas de la web o pegadas desde el portapapeles no tienen una ruta de archivo de origen y no se pueden vincular.
- Los archivos de imagen originales aún existen en sus rutas originales. Si los movió o eliminó, la macro fallará para esas imágenes.
- Tiene permiso para ejecutar macros en Word. Vaya a Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros y seleccione Habilitar todas las macros. Revierta esta configuración después de terminar.
Macro paso a paso para convertir imágenes incrustadas en imágenes vinculadas
Siga estos pasos para crear y ejecutar la macro de VBA. La macro procesa todos los InlineShapes (imágenes ancladas al texto) y Shapes (imágenes flotantes) en el documento activo.
- Abrir el editor de VBA
Presione Alt+F11 en Word. Se abre la ventana de Microsoft Visual Basic for Applications. - Insertar un nuevo módulo
En el panel Explorador de proyectos, haga clic con el botón derecho en Normal o en el proyecto del documento actual, elija Insertar y luego Módulo. Aparece una ventana de código en blanco. - Pegar el código de la macro
Copie el siguiente código y péguelo en la ventana del módulo:
Sub ConvertEmbeddedToLinked()
Dim shp As InlineShape
Dim shp2 As Shape
Dim imgPath As String
Dim imgWidth As Single
Dim imgHeight As Single
Dim rng As Range
Application.ScreenUpdating = False
' Process InlineShapes (pictures in line with text)
For Each shp In ActiveDocument.InlineShapes
If shp.Type = wdInlineShapePicture Then
On Error Resume Next
imgPath = shp.LinkFormat.SourcePath & "\" & shp.LinkFormat.SourceName
If Err.Number <> 0 Then
' No link info; skip if embedded without source
Err.Clear
GoTo NextInline
End If
On Error GoTo 0
imgWidth = shp.Width
imgHeight = shp.Height
Set rng = shp.Range
shp.Delete
Set shp = rng.InlineShapes.AddPicture( _
FileName:=imgPath, _
LinkToFile:=True, _
SaveWithDocument:=False, _
Range:=rng)
shp.Width = imgWidth
shp.Height = imgHeight
End If
NextInline:
Next shp
' Process floating Shapes
For Each shp2 In ActiveDocument.Shapes
If shp2.Type = msoPicture Then
On Error Resume Next
imgPath = shp2.LinkFormat.SourcePath & "\" & shp2.LinkFormat.SourceName
If Err.Number <> 0 Then
Err.Clear
GoTo NextShape
End If
On Error GoTo 0
imgWidth = shp2.Width
imgHeight = shp2.Height
Set rng = shp2.Anchor
shp2.Delete
Set shp2 = ActiveDocument.Shapes.AddPicture( _
FileName:=imgPath, _
LinkToFile:=True, _
SaveWithDocument:=False, _
Anchor:=rng)
shp2.Width = imgWidth
shp2.Height = imgHeight
End If
NextShape:
Next shp2
Application.ScreenUpdating = True
MsgBox "Conversion complete.", vbInformation
End Sub
- Ejecutar la macro
Presione F5 para ejecutar la macro, o vaya a Ejecutar > Ejecutar Sub/UserForm. Word procesa cada imagen y la reemplaza por una versión vinculada. Un cuadro de mensaje confirma la finalización. - Guardar el documento
Presione Ctrl+S para guardar el documento. Word ahora almacena solo las rutas de las imágenes, no los datos de las imágenes. El tamaño del archivo debería ser significativamente menor.
Si la macro omite algunas imágenes o devuelve errores
La macro puede omitir imágenes o producir errores en escenarios específicos. A continuación se presentan los problemas más comunes y cómo resolverlos.
Algunas imágenes no se convirtieron
Las imágenes pegadas desde el portapapeles, copiadas de una página web o insertadas mediante arrastrar y soltar desde un correo electrónico no tienen una ruta de archivo de origen. La macro no puede determinar dónde reside el archivo original. Para convertirlas, debe volver a insertar manualmente cada imagen usando Insertar > Imágenes > Este dispositivo y luego ejecutar la macro nuevamente.
Error: Error en tiempo de ejecución 5174 — Archivo no encontrado
Este error significa que el archivo de imagen original ya no existe en la ruta almacenada. Restaure el archivo a su ubicación original o actualice la ruta en la macro. Puede verificar la ruta de una imagen específica haciendo clic con el botón derecho en ella, seleccionando Formato de imagen y mirando la pestaña Texto alternativo (algunos metadatos pueden mostrar la ruta).
Las imágenes vinculadas muestran una X roja o un icono de imagen rota
Si mueve o cambia el nombre de los archivos de imagen de origen después de la conversión, Word no puede mostrar la imagen vinculada. Para solucionarlo, vaya a Archivo > Información > Editar vínculos a archivos, seleccione el vínculo roto y haga clic en Cambiar origen para apuntar a la nueva ubicación del archivo.
Comparación: Imágenes incrustadas vs vinculadas en Word
| Elemento | Imagen incrustada | Imagen vinculada |
|---|---|---|
| Tamaño del archivo del documento | Grande (incluye los datos completos de la imagen) | Pequeño (almacena solo la ruta del archivo) |
| Requisito de origen de la imagen | Ninguno (la imagen es autocontenida) | El archivo original debe permanecer accesible |
| Actualización cuando cambia el origen | Se requiere volver a insertar manualmente | Automática mediante Editar vínculos a archivos |
| Portabilidad | Funciona en cualquier lugar sin archivos adicionales | Se rompe si se mueven los archivos de origen |
| Método de conversión por lotes | Macro de VBA (este artículo) | Macro de VBA (este artículo) |
Ahora puede convertir todas las imágenes incrustadas en imágenes vinculadas en una sola ejecución de macro, lo que reduce el tamaño del documento y permite actualizaciones automáticas de las imágenes. Después de la conversión, considere usar Archivo > Información > Editar vínculos a archivos para verificar que todos los vínculos sean válidos. Para un control avanzado, modifique la macro para omitir imágenes por debajo de cierto tamaño o para registrar las imágenes omitidas en un documento aparte.