Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como copiar varias tablas vinculadas de Excel a Word


.

Es posible que cuando se realiza un informe con datos que se encuentra en Word normalmente se base en varias tablas de Excel y no en solamente una tabla con datos, cuyo ejemplo se presentó en el post anterior; para solucionar el tema proporciono esta macro que permite copiar o exportar varias tablas vinculadas de Excel a Word, es decir que cuando se cambie algún dato en las tablas de Excel basta con actualizar el vínculo en Word para que se actualicen los datos.

Otros post relacionados con macros que permiten manejar Word desde Excel:

Como crear un archivo de Word con Excel
Como abrir un archivo de Word con Excel
Como conectar Excel con Word crear archivo e insertar texto en Word
Como dar formato a texto de Word desde Excel 
Como abrir modificar e imprimir archivo de Word con macro desde Excel
Como modificar una plantilla de Word con macro de Excel
Como rellenar pagare con datos de Excel conectando con Word
Como crear cartas en Word con clientes listados en Excel
Como copiar tablas o cuadros de Word a Excel
Como exportar tabla de Excel a Word
Como exportar varias tablas de Excel a Word
Como copiar tabla vinculada de Excel a Word
Como copiar varias tablas vinculadas de Excel a Word

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  
El ejemplo de macro que copia o exporta varias tablas vinculadas de Excel a Word, recorre los datos desde la primer hasta la última fila con datos, determinando el rango de cada tabla y copiandolas a Word en forma vinculada, es significa que al modificar la tabla en Excel se modifica en Word automáticamente una vez actualizado el vínculo.

En el vídeo que se encuentra debajo podrás ver en forma gráfica el funcionamiento de la macro como así también una explicación más detallada del código, te recomiendo descargar el archivo comprimido y descomprimirlo en cualquier lugar de la PC con la condición que se encuentre en la misma carpeta.

El arhivo comprimido tiene dos archivos uno de Excel con la Macro y otro de Word con la plantilla con el informe donde se exportarán las tablas; luego la macro creará otro archivo con un informe con tablas vinculadas; suscribe a nuestro canal de You Tube, para recibir futuros ejemplos en forma gratuita en tu correo; para suscribir al blog puedes hacerlo de la parte superior derecha de la página, solo debes agregar tu correo electrónico y listo.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.


if (payload.eventType == ‘subscribe’) {
// Add code to handle subscribe event.
} else if (payload.eventType == ‘unsubscribe’) {
// Add code to handle unsubscribe event.
}
if (window.console) { // for debugging only
window.console.log(‘YT event: ‘, payload);
}
}


Código que se inserta en un módulo
Sub ExportaTablasWord()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim objWord As Word.Application, wdDoc As Word.Document
On Error Resume Next
Set a = Sheets(ActiveSheet.Name)
nom = ActiveWorkbook.Name
pto = InStr(nom, «.»)
nomarch = Left(nom, pto – 1)
ruta = ThisWorkbook.Path & «» & nomarch & «.docx»
Set objWord = CreateObject(«Word.Application»)
objWord.DisplayAlerts = wdAlertsNone
objWord.Visible = True
Set wdDoc = objWord.Documents.Open(ruta)
nomfic = nomarch & » » & Format(Date, «dd-mm-yyyy»)
rutainf = ThisWorkbook.Path & «» & nomfic & «.docx»

pf = 1
uff = a.Range(«A» & Rows.Count).End(xlUp).Row
n = 1

Do
uf = a.Range(«A» & pf).End(xlDown).Row
pc = a.Range(«A» & pf).Address
pwc = Mid(pc, InStr(pc, «$») + 1, InStr(2, pc, «$») – 2)

uf = uf
uc = a.Range(«A» & pf).End(xlToRight).Address
wc = Mid(uc, InStr(uc, «$») + 1, InStr(2, uc, «$») – 2)

a.Range(pwc & pf & «:» & wc & uf).Copy

ts = «[Campo_Tabla» & n & «]»
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
While objWord.Selection.Find.Found = True
objWord.Selection.PasteExcelTable True, True, False
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
Wend

pf = uf + 3
n = n + 1
Loop While pf <= uff

wdDoc.SaveAs Filename:=rutainf, FileFormat:=wdFormatXMLDocument
‘wdDoc.Close
MsgBox («Las » & n – 1 & » tablas se exportaron con éxito»), vbInformation, «AVISO»
‘wdDoc.Quit
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends