Cómo insertar los valores de un formulario de una aplicación realizada en Visual Basic en un documento de Word. Puede ser muy útil para simular «Combinar correspondencia» de Word, generar cartas personalizadas para los clientes de nuestra base de datos o cualquier comunicado con datos particulares.

En primer lugar, utilizando Microsoft Word, crearemos el documento modelo que contendrá los marcadores y el texto queramos utilizar. Para ello abriremos Microsoft Word, insertaremos el texto y, donde queramos insertar texto variable (que obtendremos de la aplicación, de la base de datos o del formulario de entrada de datos) escribiremos el nombre del marcador, lo seleccionaremos:

Cambiar marcadores de Word por valores del formulario de una aplicación Visual Basic

Con el marcador seleccionado pulsaremos el menú «Insertar», «Marcador»:

Cambiar marcadores de Word por valores del formulario de una aplicación Visual Basic

Volveremos a escribir el mismo nombre y pulsaremos «Agregar»:

Cambiar marcadores de Word por valores del formulario de una aplicación Visual Basic

Añadiremos todos los marcadores y el texto que necesitamos en la plantilla de Word:

Cambiar marcadores de Word por valores del formulario de una aplicación Visual Basic

Desde Visual Basic 6 añadiremos la referencia a Microsoft Word, para ello accederemos al menú «Proyecto» – «Referencias»:

Cambiar marcadores de Word por valores del formulario de una aplicación Visual Basic

Seleccionaremos la referencia «Microsoft Word 11.0 Object Library» (esto cambiará en función de la versión de Word que tengamos instalada):

Cambiar marcadores de Word por valores del formulario de una aplicación Visual Basic

Añadiremos al formulario de nuestra aplicación los componentes necesarios, un TextBox para la ubicación de la plantilla (documento de Word con los marcadores), otro para el documento resultante de la fusión de los datos del formulario con los marcadores de Word y tantos TextBox como marcadores hayamos insertado en el documento de Word (plantilla). Añadiremos también un botón que será el que ejecute el proceso de fusión de marcadores de Word:

Cambiar marcadores de Word por valores del formulario de una aplicación Visual Basic

En el evento «Form_Load» (evento Load del formulario principal) colocaremos el siguiente código:

El código anterior inserta en los TextBox de plantilla y documento la ruta desde la que se está ejecutando la aplicación más el valor «plantilla.doc» y «documento.doc».

En el evento bFusionarMarcadores_Click (evento Click del botón bFusionarMarcadores) colocaremos el siguiente código:

El código anterior realiza una copia del fichero de Word que incluye los marcadores (para no reemplazarlo):

FileCopy txtPlantilla.Text, txtDocumento.Text

a continuación crea un objeto de tipo Word.Document a partir del objeto Word.Application.

Set Documento = _
MSWord.Documents.Open(txtDocumento.Text)

y, por último, inserta el texto en los marcadores del documento Word:

Documento.Bookmarks.Item(«marcador1»).Range.Text = _
txtMarcador1.Text

Para probar la aplicación generaremos el ejecutable pulsando en «Archivo» – «Generar fusionarMarcadores.exe»:

Cambiar marcadores de Word por valores del formulario de una aplicación Visual Basic

Seleccionaremos la ruta y el nombre del fichero .exe resultante de la compilación de la aplicación:

Cambiar marcadores de Word por valores del formulario de una aplicación Visual Basic

Ejecutaremos el fichero .exe resultante, rellenaremos los datos correspondientes a los marcadores y especificaremos la plantilla de Word y el documento resultante:

Cambiar marcadores de Word por valores del formulario de una aplicación Visual Basic

Al pulsar el botón «Fusionar marcadores» se abrirá Microsoft Word y el documento seleccionado, habiéndose insertado los valores del formulario en el documento de Word:

Cambiar marcadores de Word por valores del formulario de una aplicación Visual Basic

Como se puede observar este artículo puede ser muy útil para aplicaciones que utilicen bases de datos de clientes, proveedores, etc para realizar comunicaciones personalizadas.