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:
Con el marcador seleccionado pulsaremos el menú «Insertar», «Marcador»:

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

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

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

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

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:

En el evento «Form_Load» (evento Load del formulario principal) colocaremos el siguiente código:
1 2 3 4 |
Private Sub Form_Load() txtPlantilla.Text = App.Path & "plantilla.doc" txtDocumento.Text = App.Path & "documento.doc" End Sub |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Private Sub bFusionarMarcadores_Click() Dim MSWord As New Word.Application Dim Documento As Word.Document FileCopy txtPlantilla.Text, txtDocumento.Text Set Documento = _ MSWord.Documents.Open(txtDocumento.Text) Documento.Bookmarks.Item("marcador1").Range.Text = _ txtMarcador1.Text Documento.Bookmarks.Item("marcador2").Range.Text = _ txtMarcador2.Text Documento.Bookmarks.Item("marcador3").Range.Text = _ txtMarcador3.Text MSWord.Visible = True End Sub |
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»:
Seleccionaremos la ruta y el nombre del fichero .exe resultante de la compilación de la aplicación:
Ejecutaremos el fichero .exe resultante, rellenaremos los datos correspondientes a los marcadores y especificaremos la plantilla de Word y el documento resultante:
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:
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.