PROGRAMAR EN VBA MACROS PARA EXCEL: Conectar Excel con Word
Mostrando las entradas con la etiqueta Conectar Excel con Word. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Conectar Excel con Word. Mostrar todas las entradas

Como Copiar Varias Tablas Vinculadas de Excel a Word de Distintas Hojas






A pedido de un suscriptor de nuestro canal de YouTube se presenta este ejemplo de macro muestra como exportar las tablas de todas las hojas de Excel a Word en forma vinculadas, es decir la macro recorrerá todas las hojas del libro de Excel, determinará en forma automática el rango de cada unas de las tablas contenidas en cada una de las hojas, las copiará y pegara en Word.

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.

  

Suscribe a nuestro canal para que YouTube te avise cuando se suba nuevo contenido al canal, en el vídeo encontrarás una explicación gráfica y detallada del ejemplo que se muestra en este post.






 


En el libro que se puede descargar desde el final, el cual es un fichero comprimido que contiene el archivo de Excel con la Macro y un archivo de Word que es usado como plantilla; al abrirlo se puede observar que el libro Excel cuenta con varias hojas, dentro de cada hoja existen diferentes tablas, estas tablas tiene como estructura común que se encuentran que todas empiezan en la columna A y que se encuentran separadas por dos filas vacías, es a los fines que la macro pueda determinar en forma automática el rango de cada una de las tablas las copie y pegue en Word.

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:

uf = a.Range("A" & pf).End(xlDown).Row
pc = a.Range("A" & pf).Address
pwc = Mid(pc, InStr(pc, "$") + 1, InStr(2, pc, "$") - 2)

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:

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

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

'**************https://programarexcel.com  **** https://youtube.com/programarexcel*********



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 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      

Como copiar imagenes y graficos de Excel a Word conectando Excel con Word





La macro copia imágenes de Excel a Word, el ejemplo muestra como se recorre todas las imágenes que hay en el libro de Excel y copias las que tiene indicado el archivo Word que debe copiar y pega las fotos en el lugar donde se deben pegar las imágenes que están en Excel.

Para entender en forma más fácil el ejemplo que se presenta en el post sugiero bajar el archivo de ejemplo, descargado el mismo se podrá observar dos botones uno sirve para renombrar todas las imágenes que hay en el libro de Excel, luego haciendo click en cada imagen se puede saber como se llama la imagen de Excel, luego sabiendo el nombre se debe agregar en Word el nombre, en el lugar exacto donde se requiere que sea pegada la imagen que está en Excel.

Desde el final del post se puede descargar el ejemplo en forma gratuita sin ninguna restricción, el código se puede adaptar a cada necesidad, Aporta por favor para sostener el sitio si está dentro de tus posibilidades, desde ya muchas gracias.

Si te estás iniciando en la operación de Excel o requieres afirmar conocimientos, 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 vídeo verás la macro en acción con una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mail, trabajando con filas, celdas, columnas, rangos y muchos ejemplos más.








 


Haciendo click en la imagen se puede saber el nombre de la imagen, quizás sea útil saber como se renombrar las imágenes y que al hacer click salga msgbox con el nombre de la imagen, el nombre de la imagen es que se debe agregar en Word más precisamente en el lugar donde se debe pegar la imagen.

Al presionar el botón que ejecuta la macro y permite copiar las imágenes de Excel a Word, aparece un explorador de archivos de Windows que permite elegir el archivo Word que contiene el nombre de la imagen y el lugar de donde se pagarán las imágenes.

En este ejemplo el archivo de Word que se usa como plantilla no se sobrescribe sino que se crea un nuevo archivo con las imágenes de Excel copiadas a Word; primero se crea un objeto con el libro de Word que se abre, seguidamente se crea el nombre dle fichero que se usará para guardar el nuevo libro de Word; para ello se usa el siguiente código:

Set wdDoc = objWord.Documents.Open(ruta)
NOMFIC = nomarch & " " & Format(Date, "dd-mm-yyyy")
rutainf = ThisWorkbook.Path & "\" & NOMFIC & ".docx"


⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Quizá sea de utilidad también

Como crear una factura con excel, guardarla y enviarla por mail automáticamente


Como enviar mail con archivo Excel y PDF mediante Outlook con Excel

Como hacer un link o hiperlink a google maps con Excel

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛



⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

Para recorrer todas las imágenes y pegarlas a Word se usa el siguiente código:

For x = 1 To ActiveSheet.Shapes.Count
ActiveSheet.Shapes(x).CopyPicture
ts = "[PID" & x & "]"
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
While objWord.Selection.Find.Found = True
objWord.Selection.Paste ' False, True, False
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
ctaima = ctaima + 1
Wend
Next x

Noten que en el código anterior se recorre desde la primera a la última imagen de Excel, la macro copia la imagen, como las imágenes se habían renombrado en forma secuencial en la variable ts se guarda el nombre de la imagen que conjuntamente con el número que va tomando la variable del bucle forman el nombre de la imagen, que a su vez se corresponde con el nombre escrito en Word, si la macro encuentre el nombre que está recorriendo el bucle, en Word, automáticamente pega la imagen.

El ejemplo denominado Como copiar imágenes y gráficos de Excel a Word, se puede descargar desde el link del final y a continuación se presenta la codificación completa.


Código que se inserta en un módulo

Sub mostrarID()
nom = Application.Caller
MsgBox ("El nombre de la imagen es: " & nom)
End Sub

Sub CrearIDImagen()
On Error Resume Next
For x = 1 To ActiveSheet.Shapes.Count
ActiveSheet.Shapes(x).Name = "[PID" & x & "] "
ActiveSheet.Shapes(x).Select
Selection.OnAction = "mostrarID"
Next x
ActiveSheet.Shapes(5).Select
Selection.OnAction = "CrearIDImagen"
ActiveSheet.Shapes(35).Select
Selection.OnAction = "CopiaimagenWord"
MsgBox ("La ID de cada imagen fue creada con éxito, para saber su nombre click en imagen"), vbInformation, "AVISO"
Cells(20, "J").Activate
End Sub

Sub CopiaimagenWord()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim objWord As Word.Application, wdDoc As Word.Document
On Error Resume Next
Set a = Sheets(ActiveSheet.Name)

myfile = Application.GetOpenFilename("Archivos Excel (*.doc*), *.doc*")
FullName = Split(myfile, Application.PathSeparator)
a = FullName(UBound(FullName))
pto = InStr(a, ".")
nomarch = Left(a, pto - 1)
If VarType(myfile) = vbBoolean Then
MsgBox ("Operación cancelada"), vbCritical, "AVISO"
Exit Sub
End If

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"

For x = 1 To ActiveSheet.Shapes.Count
ActiveSheet.Shapes(x).CopyPicture
ts = "[PID" & x & "]"
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
While objWord.Selection.Find.Found = True
objWord.Selection.Paste ' False, True, False
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
ctaima = ctaima + 1
Wend
Next x

wdDoc.SaveAs Filename:=rutainf, FileFormat:=wdFormatXMLDocument
'wdDoc.Close
MsgBox ("Se copiaron " & ctaima & " imagenes de Excel a Word"), 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      

Como asignar una macro automaticamente a una imagen o shapes de Excel





En el post se muestra como asignar automáticamente una macro a una imagen, previamente se muestra como cambiar el nombre a las imágenes de Excel, asignándoles una macro en forma automática.

En el post anterior se publicó como pasar gráficos de Excel a Word, si es útil sigue el link, esta relacionado con este ejemplo, porque aca se explica parte del código que una el ejemplo mencionado.

Desde el final del post se puede descargar el ejemplo en forma gratuita sin ninguna restricción, el código se puede adaptar a cada necesidad, Aporta por favor para sostener el sitio si está dentro de tus posibilidades, desde ya muchas gracias.

Si te estás iniciando en la operación de Excel o requieres afirmar conocimientos, 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 vídeo verás la macro en acción con una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mail, trabajando con filas, celdas, columnas, rangos y muchos ejemplos más.









 



El ejemplo consta de dos partes una que permite cambiar el nombre de las imágenes que se encuentran en la hoja de Excel y la otra parte, va asignando automáticamente una macro a cada imagen, en este caso al tomar la imagen con el Mouse, aparece un mensaje con el nombre de la imagen.

La macro recorre todas las imagenes de la Hoja de Excel a través de un bucle, que se hace con el siguiente código:

For x = 1 To ActiveSheet.Shapes.Count

...

Next x


Con el siguiente código se va renombrando las imágenes para luego seleccionarla:

ActiveSheet.Shapes(x).Name = "[PID" & x & "] "

ActiveSheet.Shapes(x).Select

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Quizá sea de utilidad también

Como crear una factura con excel, guardarla y enviarla por mail automáticamente


Como enviar mail con archivo Excel y PDF mediante Outlook con Excel

Como hacer un link o hiperlink a google maps con Excel

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛



⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

Con la imagen seleccionada, se le asigna una macro que en este caso es Mostrar ID, es decir muestra solamente el nombre de la imagen, pero se puede asignar cualquier macro.

Selection.OnAction = "mostrarID"

El código anterior asigna a una imagen seleccionada la macro mostrarID

El código completo de la macro que se denominó Como Asignar una Macro Automáticamente a una Imagen o Shapes de Excel, se puede observar a continuación  y seguidamente está el link de descarga del ejemplo.


Código que se inserta en un módulo

Sub mostrarID()
nom = Application.Caller
MsgBox ("El nombre de la imagen es: " & nom)
End Sub

Sub CrearIDImagen()
On Error Resume Next
For x = 1 To ActiveSheet.Shapes.Count
ActiveSheet.Shapes(x).Name = "[PID" & x & "] "
ActiveSheet.Shapes(x).Select
Selection.OnAction = "mostrarID"
Next x
ActiveSheet.Shapes(17).Select
Selection.OnAction = "CrearIDImagen"
MsgBox ("La ID de cada imagen fue creada con éxito, para saber su nombre click en imagen"), vbInformation, "AVISO"
Cells(20, "J").Activate
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