Cómo convertir todas las imágenes incrustadas de Word en imágenes vinculadas mediante programación
🔍 WiseChecker

Cómo convertir todas las imágenes incrustadas de Word en imágenes vinculadas mediante programación

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.

ADVERTISEMENT

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.

  1. Abrir el editor de VBA
    Presione Alt+F11 en Word. Se abre la ventana de Microsoft Visual Basic for Applications.
  2. 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.
  3. 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
  1. 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.
  2. 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.

ADVERTISEMENT

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.

ADVERTISEMENT