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.
La macro se ejecuta con el botón que se encuentra en la hoja1 del libro, al presionarla recorre cada una de las hojas del libro Excel buscando las tablas y copiando y pegando las miasmas a Word, el archivo de Word es una plantilla que simula un informe que contiene un marcador que le dice a la macro donde debe ir pegada cada tabla.
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Quizá sea de utilidad también
Como sumar datos seleccionados en un listbox multiselect
Como insertar filas en hojas de Excel
Libro de Excel con link a todas las macros y tutoriales en YouTube con buscador
La macro recorre todas las hojas del libro Excel en busca de las tablas, para recorrer hojas se utiliza el siguiente código:
For Each hoja In Worksheets
Para que la macro determine en forma automática el rango de las tablas se detecta cual es la última fila hasta llegar a la fila vacía, por eso es necesario por lo menos una fila en blanco entre tabla y tabla, los siguientes códigos determinan cual es la ultima fila y última columna del rango de la tabla y lo copia:
Se se observa el archivo de Word que se acompaña con el ejemplo y que se usa como plantilla, tiene marcado donde la macro debe pegar cada una de las tablas, en este ejemplo las tablas se enumeran de la uno en forma consecutiva empezando en la hoja uno, es por ello que si la tabla 5 por ejemplo se requiere en un determinado lugar de Word se debe escribir en la plantilla:
[CAMPO_TABLA5]
La macro con el siguiente código busca el número de la tabla y la pega en forma vinculada, es decir si se modifica en Excel se modificará en Word, en el lugar indicado con el siguiente código:
Seguidamente se muestra el código completo incluido en todo el formulario que se proporciona con el ejemplo llamado Como Copiar las Tablas de Todas las Hojas de Excel a Word en forma Vinculada, luego del código se encuentre el link para proceder a la descarga del ejemplo el cual recomiendo como así también ver el vídeo para que sea más fácil entenderlo.
Código que se inserta en un módulo de VBA
Sub ExportaTablasWordVinc()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim objWord As Word.Application, wdDoc As Word.Document, hoja As Worksheet
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»
n = 1
‘para cada hoja del libro
For Each hoja In Worksheets
Set a = Sheets(hoja.Name)
pf = 1
uff = a.Range(«A» & Rows.Count).End(xlUp).Row
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
Next ‘proxima hoja
‘wdDoc.Close
MsgBox («Las » & n – 2 & » tablas se exportaron con éxito»), vbInformation, «AVISO»
‘wdDoc.Quit
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends