flopy.es

Díscolo blog de informática, y humor

flopy.es - Díscolo blog de informática, y humor

Combinar correspodencia con imágenes en Microsoft Word

Microsoft WordEn entornos empresariales la función de “combinar correspondencia” de Microsoft Word es casi imprescindible. Nos permite, entre otras cosas, crear cientos de documentos muy similares pero con campos personalizados, por ejemplo para enviar cartas con el mismo contenido pero en las que sólo cambia el destinatario.

Para ello usamos un archivo en el que tenemos un listado de los elementos que cambian en cada uno de los documentos (normalmente un archivo de excel), y un archivo en el que combinamos las partes fijas y las que cambian (el propio documento de word).

En mi empresa usamos esta funcionalidad habitualmente, pero necesitábamos darle una vuelta de tuerca, ya que además de combinar datos de texto que estaban en la tabla de excel, necesitábamos poder insertar imágenes distintas en cada uno de los documentos. Conseguirlo nos ha obligado investigar bastante, por un lado por la desastrosa implementación de esta funcionalidad en Microsoft Word y por otro lado por la poca documentación de calidad que hay en internet con instrucciones de cómo hacerlo. Voy a intentar explicaros todo el proceso de la forma más clara posible.

Para seguir el tutorial de forma correcta os dejo este enlace con todos los archivos que vamos a usar. Os recomiendo descomprimir todo y poner la carpeta “Ejemplo” en la raíz de vuestro disco duro (C:), para que los vínculos a los archivos de excel no se rompan.

1) Creando los archivos base.

Para empezar necesitamos lo siguiente:

– Una carpeta con los archivos de imagen. Intentad que tengan todos las mismas dimensiones, o al menos la misma relación de aspecto, y que tengan todos el mismo formato (por ejemplo, todos JPG o todos GIF).
– Un archivo de excel con los datos.
– Un archivo de word en el que vamos a generar los documentos.

Es MUY IMPORTANTE que el archivo de word tenga formato de word 2003 (.doc). El formato “.docx” es incompatible con lo que vamos a hacer.

Vamos a empezar creando una combinación de correspondencia normal y corriente. En Word 2010 nos vamos a la pestaña “correspondencia”, desplegamos “Seleccionar destinatarios” y pinchamos en “usar lista existente”. Buscamos el documento de excel con los datos y le hacemos doble click para seleccionarlo. Si tenemos datos en la tabla además de las imágenes, podemos ponerlos en el documento seleccionando “insertar campo combinado” y luego el nombre de la columna que queramos poner. Seleccionando el botón “vista previa de resultados” podemos ver las diferentes filas del excel (pulsando en los botones de avance y retroceso que hay al lado de ese botón).

Navegador combinar correspondencia

En el ejemplo que os he dejado para descargar, en el documento “1-Archivo inicial” podéis ver un archivo de word ya vinculado a un excel, que simplemente coge el nombre y apellido de las dos primeras columnas de la tabla y los muestra en el documento. No hay ninguna foto todavía en el archivo.

Archivo inicial

2) Añadir fotos según listado de excel.

En la zona dónde queramos poner la foto situamos el cursor. Pinchamos en la pestaña “insertar”, pinchamos en “imagen” y buscamos la primera imagen en nuestro disco. Una vez localizada, en lugar de hacerle doble click o pinchar en insertar, debemos desplegar el botón “insertar” (pinchamos en un triángulo que hay a su lado) y pinchamos en “vincular al archivo”. Eso aparentemente nos inserta una foto de forma normal.

Vincular al archivo

Sin embargo insertar la imagen de esta forma nos permite hacer lo siguiente: Si fichamos en la fotografía ya insertada y luego pulsamos la combinación de teclas “Alt+F9”, vamos a ver el código que corresponde a la inserción de esa fotografía. El código que obtenemos al insertar la primera foto es el siguiente:

{INCLUDEPICTURE "Fotos/a.jpg" \* MERGEFORMAT \d }

Podéis verlo funcionando en el archivo “2-Con foto estática.doc” del ejemplo que os he dejado para descargar.

Codigo una foto

Si pulsamos de nuevo “Alt+F9″ para ver la imagen y luego en los botones de avance y retroceso de la correspondencia, veréis que esa imagen se mantiene estática, por lo que esto no nos sirve.

Para que las fotos cambien debemos primero hacer que el código apunte a la ruta completa de la foto. Si habéis descomprimido la carpeta de ejemplos en el directorio raíz del disco C, la ruta a la primera foto sería la siguiente:

C:\Ejemplo\Fotos\a.jpg

Pero el Word para identificar la ruta correctamente nos obliga a que las barras de directorio sean dobles, por lo que la ruta a la primera imagen sería

C:\\Ejemplo\\Fotos\\a.jpg

OJO: Si la carpeta en la que están las imagenes es una carpeta de red, al principio tendríamos que poner cuatro barras. La ruta sería de este estilo:

\\\\Servidor\\Ejemplo\\Fotos\\a.jpg

En todo caso, con nuestro ejemplo el código para insertar la primera foto sería el siguiente:

{ INCLUDEPICTURE "C:\\Ejemplo\\Fotos\\a.jpg" \* MERGEFORMAT \d }

Pero esto nos sigue apuntando aún a la primera foto y no podemos ver las siguientes. Es ahora cuando debemos introducir la combinación de correspondencia. En el código de la foto, borramos la letra “a” del nombre del archivo (donde pone a.jpg). Dejamos el cursor dónde estaba esa letra “a” y en la cinta de “correspondencia” pulsamos en “insertar campo combinado” y luego en “foto”. Obtendremos algo como esto:

{ INCLUDEPICTURE "C:\\Ejemplo\\Fotos\\{ MERGEFIELD FOTO }.jpg" \* MERGEFORMAT \d }


Codigo varias fotos

En el excel, la columna “Foto” tiene los nombres de los archivos que contienen las fotos sin la extensión. Los nombres que he puesto son del tipo “a”, “b”, “c”… pero podrían ser de cualquier otro tipo. Lo que sí que he hecho ha sido poner todas las imágenes con el mismo tipo de archivo. Todas son “.jpg”, por lo que la extensión es la misma en todos los archivos.

Es muy importante que el campo { MERGEFIELD FOTO } os lo cree la propia combinación de correspondencia. Si lo escribís directamente no os va a funcionar. Tenéis que añadir el campo con los botones dedicados a ello (insertar campo combinado –> Foto).

El código que hemos creado lo podéis ver funcionando en el archivo “3-Con fotos que cambian”. Este código ya nos va a permitir cambiar entre las distintas fotos, pero de una forma un tanto “especial”. Si pulsamos “Alt+F9” para ver la foto y luego pulsamos los botones de navegación hacia adelante y hacia atrás de la correspondencia, veremos que la foto no cambia, pero si una vez que cambiamos la página de la correspondencia pinchamos encima de la foto y luego pulsamos “F9”, la foto se actualiza y veremos la foto que corresponde a cada una de las filas de nuestro excel. Además este problema se extiende a la opción “finalizar y combinar”. Si pinchamos en ese botón y luego en “editar documentos individuales” y combinamos todos los registros, obtenemos un documento de varias páginas y en principio cada una de ellas tiene la misma foto, pero si pulsamos “control+E” para seleccionar todo el documento y luego “F9″, tendremos las fotos actualizadas y veremos una foto distinta en cada página.

FFUUUPor lo que se ve, según Microsoft esta es la forma correcta de mostrar esas fotos. Llegados a este punto sólo puedo decir… ¿PERO QUÉ MIERDA ES ESTO?. Cualquier combinación de correspondencia sin imágenes funciona a las mil maravillas, pero ¿cuando hago una combinación de correspondencia con imágenes resulta que hay que actualizar cada vez que cambio de página? Bajo mi punto de vista, este problema unido a la imposibilidad de hacer todo esto en el formato “docx” hace bajar muchos puntos la seriedad del paquete office. Lo siento Bill Gates, pero esto es una verdadera chapuza. Luego me saldrá el listillo de turno diciendo que el libreoffice es malo. Si es que…

3) Arreglando la actualización de las imágenes.

Vamos a intentar reprimir nuestra ira y centrémonos en arreglar este desaguisado. Podemos crear una macro de word para que cada vez que pulsemos cualquiera de los botones de navegación se actualicen las fotos, así que vamos a ello.

Lo primero es hacer que Microsoft Word nos permita “juguetear” con macros. Para ello nos vamos a la pestaña “Archivo”, pinchamos en “opciones”, seleccionamos en la izquierda “Personalizar cinta de opciones” y en la derecha de esa ventana, en las fichas principales de “personalizar la cinta de opciones” marcamos la casilla de verificación que está junto a “programador” y aceptamos los cambios. Esto hará que se muestre una pestaña nueva en Word que pone “programador”.

Activar programador

Nos vamos a la pestaña “programador”. Para crear una macro nueva pinchamos en el botón “Macros”. En “nombre de la macro” ponemos “Actualizador”. En el desplegable llamado “Macros en”, pulsamos en el nombre del archivo de word (para que la Macro vaya dentro de este archivo siempre y pueda usarla cualquier otra persona en un equipo diferente al nuestro).

7-Crear-Macro

Ahora pinchamos en Crear y nos sale una pantalla grande en la que podremos poner el código de nuestra macro. El código que nos sale inicialmente es el siguiente:

Sub Actualizador()
'
' Actualizador Macro
'
'

End Sub

Vamos a borrar esas líneas y vamos a poner en su lugar este otro código.

Sub CombinarRegistroAnterior()

On Error Resume Next
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdPreviousRecord
Selection.WholeStory
Selection.Fields.Update
Selection.EndKey Unit:=wdLine
On Error GoTo 0

End Sub

Sub CombinarRegistroSiguiente()
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Selection.WholeStory
Selection.Fields.Update
Selection.EndKey Unit:=wdLine
End Sub

Sub CombinarEnDocumento()

Dialogs(wdDialogMailMerge).Show

Selection.WholeStory
Selection.Fields.Update
Selection.HomeKey Unit:=wdLine

End Sub


8-Macro-pegada

Una vez pegado este código, pinchamos en el botón de guardar y cerramos esa ventana. Ahora si navegamos por las distintas páginas de la correspondencia por fin se ven todas las fotos correctamente. Además si nos vamos a “editar documentos individuales” también aparecerán las imágenes correctamente.

6-Resultado-final

Para explicarlo de forma sencilla, estas macros lo que hacen es que cada vez que se pulsan los botones para cambiar la página de correspondencia, automáticamente nos pulsan en “F9″ para actualizar las fotos. Podéis ver esta macro funcionando en el archivo “4-Con Macro para actualizar las fotos”. Con esto podríamos tener funcionando correctamente la visualización de las fotos. ¡¡¡POR FIN!!!

4) Rizando el rizo: optimizando los nombres de archivo.

Dependiendo de cómo nos organicemos, puede que no tengamos que trabajar de más añadiendo la última columna a nuestro excel (la del nombre de archivo de la foto). Podemos renombrar en este caso todas las fotos con el nombre y apellidos del individuo. Si el nombre y apellidos de la foto coincide con el que tenemos en la tabla de excel, podemos hacer lo siguiente (os dejo este último ejemplo en la carpeta “ejemplo con fotos normalizadas”).

En el código de la imagen ponemos como siempre el comienzo de la ruta hasta llegar al nombre del archivo. En el nombre del archivo quitamos el campo { MERGEFIELD FOTO } y mediante el botón “insertar campo combinado” ponemos el campo de nombre. Luego insertamos un espacio y ponemos el campo del apellido. Nos quedaría algo similar a esto:

{ INCLUDEPICTURE "C:\\Ejemplo\\Ejemplo con fotos normalizadas\\Fotos\\{ MERGEFIELD Nombre } { MERGEFIELD Apellido }.jpg" \* MERGEFORMAT \d }


Código optimizado

Así, si tenemos los campos con el nombre correcto y las fotos también con el nombre correcto, nos ahorramos una columna en la hoja de excel.

Fuentes del artículo: (1) (2)

Share
Categoría: Tutoriales
  • Toni Blanco comentó:

    Me ha sido de mucha ayuda y lo explicas todo de forma muy precisa y detallada. Ha funcionado a la primera incluso la creación de la Macro. Pero cuando finalizo la creación de la correspondencia en un único documento final, ahí no aparecen las imágenes actualizadas tengo que seleccionarlas todas y actualizar con F9.

    De todas formas repito, muy bien explicado y funciona.

    Muchas Gracias.

    09/10/2015 - 18:38
  • Marcos Matas comentó:

    Efectivamente. Si le das a “finalizar y combinar” y creas un documento con todas las combinaciones, vas a tener que seleccionar todo y pulsar F9, pero además tienes la desventaja de que ese documento depende de la ruta de las fotos, por lo que si le mandas ese documento “finalizado” a otra persona no va a ver las fotos correctamente, porque vincularán a la ruta del archivo. Cosas de word.

    10/10/2015 - 20:42
  • María Martín comentó:

    El archivo es perfecto!! Porque me solucionaría casi al 100 % la creación de unas fichas con fotos, me lo genera en el word antes de combinar… al combinar el documento la imagen me sale como que no se carga, me explico un cuadradito donde va la imagen, pero en la esquina superior izquierda otro cuadradito con una cruz roja, a qué puede ser debido??

    Otra cosa, sería posible en vez de con una imagen con dos?? Es una tabla con dos columnas y en cada columna sería una imagen distinta, cogida de ubicación distinta.

    Gracias por compartir la información.
    Saludos,

    01/11/2015 - 19:54
  • Paola Rangel comentó:

    Esta genial! pero como puede hacerse para enviar por e-mail a cada persona de la base de datos su información, incluida la imagen que le toca? … he hecho el intento y manda la misma imagen a todos…

    10/12/2015 - 20:59
  • Ramón Piñeiro Martinez comentó:

    Quisiera que me explicaras como puedo hacer para que el eyetv DTT elgato me funcione con el OSX El Capitan.
    Tabien que es lo que tengo que hacer para escribir en el disco duro externo, pues desde que tengo El Capitan puedo leer,pero no escribir o introducir fotografías

    03/01/2016 - 10:46
  • Jesús comentó:

    Estoy seguro de que ésta es la solución, pero hay algo que no acaba de ir bien del todo, ya que he incluido la macro en el documento original e incluso en el documento creado en la combinación, pero siguen sin salir las imágenes y es necesario pulsar F9 después de pinchar enima de la imagen que te muestra el documento resultante, que te muestra SIEMPRE la primera imagen de la lista. Por lo demás, enhorabuena por el artículo, y sobre todo por la claridad en la explicación.

    25/09/2016 - 16:58
  • Ramón Piñeiro Martinez comentó:

    muy interesante, pero manda mas cosas, gracias

    28/10/2016 - 11:26
  • Miguel Camacho Arreola comentó:

    Me pueden proporcional la combinacion de las teclas ALT + F9, para el Oficce 2016 windows 10

    gracias

    16/11/2016 - 6:48
  • NSalas comentó:

    Por fin un tutorial que funciona! Muchísimas gracias.

    23/06/2017 - 23:48
  • Ballenazo comentó:

    Me ha funcionado perfectamente tu tutorial, muchas gracias

    13/10/2017 - 2:29

Tu dirección de correo no será publicada.

 

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. CERRAR