Combinar un formulario de excel con una plantilla de word

ANTECEDENTES

Tengo un excel con información en varias hojas

Una de las hojas (sheets("CONTROL")) me muestra un resumen de los datos con una macro cuando relleno una casilla con el numero de cliente

NECESIDAD

He de enviar a la impresora un "informe" con algunos de los datos de esa hoja en formato carta

Además de los datos de la hoja CONTROL en el formulario he de incluir la referencia del cliente y la sucursal de envío.

Estos datos se han de guardar (no todos) al final de una hoja ya creada que se llama "Correspondencia"

Planteamiento

Tengo los siguientes datos en la hoja control (repartidos en varias celdas)

{nº_cliente, nombre_cliente, dni_cliente}

Mediante el formulario (que también me muestra los datos anteriores en box bloqueadas) añado estos datos

{sucursal, direccion_envio,referencia_cliente, fecha}

Al seleccionar la sucursal de un desplegable automáticamente la busca en una tabla para mostrar la dirección de envío en otro box bloqueado.

Estos datos han de combinarse con el documento PRESENTACIÓN.DOC, y guardar una copia con el formato {nº_cliente}&"Presentacion".doc en el escritorio.

Además los datos se han de guardar en la hoja CORRESPONDENCIA en la ultima línea disponible y solo los datos {nºcliente,"Presentacion", sucursal, fecha, referencia_cliente}

MI BLOQUEO

Básicamente es como llevar los campos del formulario al word de plantilla, combinarlos y que guarde el documento nuevo generado.

El resto de cosas como anexar los datos a la hoja de CORRESPONDENCIA creo saber como hacerlo, y el formulario también.

NOTA

No puedo poner ningún archivo de ejemplo ya que trabajo sobre un excel con datos privados, tanto de mi lugar de trabajo como de los clientes, por lo que me es imposible anexarlo.

1 respuesta

Respuesta
1

Para hacer la combinación entre Word y Excel, se puede utilizar una macro como esta.

Sub CorrespondenciaConWord()
'Por.Dante Amor
    '
    patharch = ThisWorkbook.Path & "\plantilla1.dotx"
    '
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        Set objWord = CreateObject("Word.Application")
        objWord.Visible = True
        objWord.documents.Add Template:=patharch, NewTemplate:=False, DocumentType:=0
        '
        For j = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
            textobuscar = Cells(1, j)
            objWord.Selection.Move 6, -1
            objWord.Selection.Find.Execute FindText:=textobuscar
            '
            While objWord.Selection.Find.found = True
                objWord.Selection.Text = Cells(i, j) 'texto a reemplazar
                objWord.Selection.Move 6, -1
                objWord.Selection.Find.Execute FindText:=textobuscar
            Wend
            '
        Next
        '
        ObjWord. Activate
        ObjWord. ActiveDocument.SaveAs Cells(i, "A").Value
        objWord. ActiveDocument. Close
 objWord. Quit
    Next
End Sub

Lo que hace es abrir el documento de word y reemplazar los datos de una hoja de excel y guardar el documento de Word con un nuevo nombre.

Esta macro, hace las veces de correspondencia, es decir, ya no es necesario que realices la combinación desde Word.


Para entender cómo quieres las solución tendría que ver la estructura de tu formulario, de tus archivos de word y de excel.

No te estoy pidiendo que me envíes los datos de tu empleo, pero envíame ejemplos con datos ficticios.

Lo que me interesa es ver cómo tienes los encabezados de excel, cómo tienes tu plantilla de Word.

Para mayor referencia consulta este enlace para que conozca la forma de la correspondencia que hace esta macro:

Guardar documentos de acuerdo a un texto variable


Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Oscar Ballabriga” y el título de esta pregunta.

¡Gracias!

Ok, mañana te preparo un fichero ficticio y te lo envío. Dejaré puesta la macro que me indicas haber si hay suerte y funciona.

Gracias por tu tiempo Dante

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas