.
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.
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);
}
}
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:
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
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:
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 SubSub 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
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
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
.
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