PROGRAMAR EN VBA MACROS PARA EXCEL: Como copiar imagenes y graficos de Excel a Word conectando Excel con Word

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