Copiar toda una tabla de Excel a Word mediante macros vba

Este es un ejemplo que lo puse por las recomendaciones en los comentarios de una publicación anterior, a continuación mostraré como copiar toda una tabla en una hoja de Excel a cualquier parte de un archivo Word.

Además de utilizar nuestra hoja en Excel, también usaremos una plantilla hecha en Word y parte del procedimiento aplicado en la publicación anterior que mencioné.

Como primer paso crearemos un plantilla en Word que se llamará “plantilla.dotx”, la rellenaremos con texto de prueba y más o menos a la mitad colocaremos el texto “[tabla_excel]” sin las comillas y como se muestra en la imagen:

wordsintabla

El segundo paso es colocar el código (macro vba) en un nuevo módulo (en el libro Excel)

Sub tablaaword()
patharch = ThisWorkbook.Path & "\plantilla.dotx"
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.documents.Add Template:=patharch, NewTemplate:=False, DocumentType:=0

Hoja1.Range("A1:D6").Select
Selection.Copy

textobuscar = "[tabla_excel]"

objWord.Selection.Move 6, -1 'moverse al principio del documento
objWord.Selection.Find.Execute FindText:=textobuscar

While objWord.Selection.Find.found = True 'reemplaza el texto, y busca si hay otro para reemplazarlo

objWord.Selection.PasteExcelTable False, True, False

objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
Wend

objWord.Activate

End Sub

Luego llenamos los datos en la hoja del libro Excel; hay que tener muy en cuenta el rango, en este ejemplo he llenado datos desde la celda A1 hasta la celda D6 las que representan el rango “A1:A6” que usé en el macro anterior y como se ve en la siguiente imagen:

exceltablaaword1

Por último vemos como queda el documento luego de vincular un botón al macro y ejecutarlo.

wordcontabla

Para terminar dejo el ejemplo ya desarrollado, espero lo aprovechen, que tengan un buen día.

Etiquetas:, , , ,

"Trackback" Enlace desde tu web.

M. Vizcarra

Ing. Industrial, egresado de la Facultad de Ingeniería Industrial y de Sistemas de la Universidad Nacional Hermilio Valdizán de Huánuco, Perú.

Comentarios (11)

  • Edgardo

    |

    Estimado,

    muy buena la macro, pero quería consultarte si no conoces la macro que te lee hasta el ultimo campo poblado de la tabla excel de manera de hacer variable el tamaño de la matriz a exportar?

    si sabes algo te lo agradecería ene, de antemano gracias

    Reply

  • M. Vizcarra

    |

    Claro, sólo tienes que leer la columna de datos que no tenga ninguna celda vacía, como ejemplo para la columna “A” el código sería:

    .
    .
    .
    
    i=1
    While Hoja1.Cells(i,1)<>"" 'Cells(fila,columna)
    i=i+1
    Wend
    desde = Hoja1.Cells(1, 1).Address 'la celda A1
    hasta = Hoja1.Cells(i, 4).Address 'la celda D6 para nuestro ejemplo
    
    Hoja1.Range(desde & ":" & hasta).Select
    Selection.Copy
    
    .
    .
    .
    

    Reply

  • jay alvarez

    |

    Como puedo comunicarme con usted, señor????
    Me interesa su programa pos en excel.
    Gracias!!!

    Reply

  • José Miguel

    |

    Hola y gracias por su blog.

    Me gustaría pedirle un favor,

    llevo tiempo intentando conseguir algo muy parecido a lo que explicas pero no acaba de salirme bien y me preguntaba si puedo explicártelo para que me ayudes.

    Tengo una Excel con unos cuadros donde acumulo la facturación a varios profesionales, cada uno con su cuadro.

    Y tengo una plantilla de una carta, donde copio y pego a mano cada cuadro con la facturación de lo que le debo a cada colaborador.

    Lo que quiero es hacer una macro que lleve cada cuadro a la plantilla y lo imprima, ni siquiera necesito guardar los Word, solo la tabla de Excel.

    ¿Tiene algún correo donde le pueda mandar los archivos?
    Muchas gracias y un saludo.
    J. Miguel Acosta.

    Reply

  • Elmer

    |

    Que tal!

    Como hay que modificar la Macro para pasar el color de las celdas o los bordes de la Tabla, para que se pase el formato de la tabla como se tiene en Excel.

    Reply

  • Jordi

    |

    Este código me ha ido de fabula. Pero me gustaría saber como puedo indicarle que me pegue la tabla centrada en el documento.
    En el caso que copie un objeto, también me interesaría saber como pegarlo centrado.
    He visto otra solución tuya para importar texto a word que me ha ido muy bien. Pero no consigo que cuando busca [reemp_nombre] y este esté en el encabezado me lo cambie por el valor deseado.
    Si me pudieras ayudar.
    Saludos.

    Reply

  • NANCY PEREZ

    |

    Buenos días, por favor podrías indicarme si existe un código para que copie solo las celdas que tengan datos? y en este caso sería variable la tabla, por que varían las tablas a insertar.
    Gracias por tu ayuda

    Reply

  • dani

    |

    Hola, quisiera solventar el problema inverso. Tengo una plantilla-formulario en Word, que voy rellenando cuando visito mis clientes. Ahora me piden estadística, y necesitaría pasar los datos de campo a una hoja excel, para poder analizar datos.
    Como se pasan datos de word a excel?
    Gracias por su ayuda
    Dani

    Reply

  • Mauro

    |

    este codigo me sirvió mucho sin embargo, siempre me copia una fila de más (una fila en blanco en la tabla que me perjudica el formato) , algun consejo para arreglar este problema?

    Reply

  • William

    |

    Estimado, busco y busco pero no puedo encontrar el codigo fuente que me ayude a copiar el contenido de un textbox alojado en un userforme dentro de excel a una plantilla de word….. podrias ayudarme con esta duda que tengo.

    Reply

  • José

    |

    Una consulta se pueden combinar datos, como en ejemplo anterior y copuiar una tabla como esta… y como sería????

    Reply

Deja un comentario