Inicio Soporte Técnico VBScript para Llenar automáticamente documento Word con los datos de renglón de...

VBScript para Llenar automáticamente documento Word con los datos de renglón de Excel

3774
0

Se presento la necesidad de llenar un formato de Word automáticamente sin utilizar el ya conocido Mail Merge el cual requiere mas pasos que la opción que les muestro en este articulo que es con VBScript, claro presenta un poco mas de trabajo inicial pero para los siguientes documentos el proceso sera mucho mas rápido y fácil para el usuario final.

VBScript para Excel que llene un formato de Word automáticamente con marcadores

Consiste en tener datos en Excel capturados el cual debemos escribir en Word cuando se tenga completa la información de cada renglón del documento Excel, como ya hay datos ingresados de días anteriores solo deberá exportar o enviar la información del renglón seleccionado.

Para este proceso vamos a crear dos archivos el documento Word que vamos usar como plantilla y un documento Excel con macros habilitados, veamos paso a paso que proceso lleva cada documento.

Trabajando con el documento Word

Tengo una plantilla [Ver Imagen] con los siguientes campos que requiero llenar automáticamente en total son 5 campos.

Plantilla Word para llenar automaticamente con Excel

Ponemos el cursor donde vamos a insertar el primer marcador y después vamos a poner un marcador para cada campo, Los marcadores los localizamos en Insertar > Marcadores.

Capturar marcador en Word

Posicionados en el primer campo damos clic en Marcadores.

Capturando marcadores en documento Word

Nos mostrara una ventana donde damos el nombre al Marcador [1] y añadimos [2], si ya hemos añadido alguno al documento los mostrara en el recuadro de abajo.

Ventana marcadores Word

Ahora si queremos ver donde se han colocado marcadores podemos habilitar la opción en la configuracion de Word.

Ejemplo donde se muestran marcadores en el documento

Estos marcadores los debemos mantener ya que los vamos a ingresar en el Código VBScript.

Trabajando con el documento Excel

Vamos a abrir el documento Excel donde tenemos la información que vamos a estar exportando a Word, por ejemplo voy a mostrar solo los datos con los que llenamos el encabezado (lo que es información publica).

Informacion de Excel que se exportara a Word

Ahora abrimos el Editor de VBScript presionando la combinación de teclas [keybt]ALT[/keybt]+[keybt]F11[/keybt] y sobre la Hoja 1 (Sheet 1) pegamos el Código VBScript.

Te recomendamos  Ejecutar archivo bat remotamente con PSEXEC

Pegar codigo VBScript en editor de codigo de Excel

Editamos las siguientes lineas marcadas en la imagen, no las marco con numeración ya que en la sección EntireRow vas a ingresar una linea por cada marcador que hayas ingresado en el documento Word.

Lineas del codigo VBScript que se tienen que editar

La primer linea marcada en el código que inicia con Const myDoc debemos declarar la ruta donde se encuentra el documento Word que usaremos como plantilla.

En la sección de los marcadores encontramos 4 lineas en mi ejemplo; en el cual se indica en el numero 1 es el nombre del marcador que dimos en el documento Word y el numero 2 es la letra de la columna del documento Excel donde se encuentra el dato que corresponde al marcador de Word.

Editar seleccion en VBScript con los marcadores

La ultima linea marcada en la imagen el cual comienza con doc.SaveAs debemos indicar donde se guarda el documento en este caso indicando ThisWorkbook.Path indicamos al script que debe guardar el nuevo documento en la misma ruta donde se encuentra la plantilla de Word, después yo agrego la fecha y finalizo con el .docx que es la extensión de los documentos Word.

Cabe aclarar que puedes añadir lo que sea en el nombre solo agregando & y el texto a ingresar entre comillas “Texto” por ejemplo:

doc.SaveAs ThisWorkbook.Path & "" & "Documento de entrega con fecha: " & Format(Date, "yyyymmdd") & ".docx"

Para finalizar debemos guardar el documento Excel con macros habilitados.

Guardar Excel con macros habilitados

Otro tip yo he agregado un acceso directo para ejecutar el código, ve como añadir un acceso directo para ejecutar el código VBScript las instrucciones del articulo son de Outlook mas es igual el proceso:

Acceso directo para ejecutar el Script de Excel

Ya realizado el proceso las Instrucciones de uso son simples:

1.- Seleccionas la linea donde se encuentra la información a exportar al documento Word.

2.- Ejecutas el Script el cual puede ser agregando el acceso directo o directamente del editor.

Ejecutar Script desde el editor de VBScript

3.- Se abre la plantilla de Word, se llenan los datos automáticamente y te crea un archivo en la ruta indicada.

Te recomendamos  VBScript - Exportar Tablas Recibidas por Correo a Excel

4.- Listo con esto ya has optimizado una tarea de tu trabajo.

Código VBScript de Excel para llenar campos de documento Word automáticamente

Option Explicit

Sub test()
    Dim wd As Object
    Dim doc As Object
    Dim rng As Range
    Set rng = Selection
    Const myDoc = "C:UsersFernando OPlantilla Ejemplo.docx" 'indica la ruta del formato
     
    Set wd = CreateObject("Word.application")
    wd.Visible = True
    Set doc = wd.Documents.Open(myDoc)
    
    With Selection.EntireRow
        doc.Bookmarks("BMEmpresa").Range.Text = Range("A" & rng.Row).Value
        doc.Bookmarks("BMDireccion1").Range.Text = Range("B" & rng.Row).Value
        doc.Bookmarks("BMDireccion2").Range.Text = Range("C" & rng.Row).Value
        doc.Bookmarks("BMFolio").Range.Text = Range("L" & rng.Row).Value
    End With
    
    doc.SaveAs ThisWorkbook.Path & "" & Format(Date, "yyyymmdd") & ".docx"
    'doc.Close False
    'wd.Quit
    
    Set doc = Nothing
    Set wd = Nothing
    
End Sub