Insertar fotos en excel y que estas queden en el archivo

Me gustaría poder insertar un grupo de fotos a un archivo de Excel en unas celdas determinadas, he visto varios métodos y todos muy útiles pero mi problema es el siguiente, cuando comparto el archivo creado las fotos no aparecen en el archivo, esto se debe a no comparto la carpeta donde se encuentran las fotos. Lo que me gustaría es encontrar una manera de que estas fotos queden en el archivo, así poder solo compartir el archivo de Excel sin necesidad de compartir la carpeta de fotos

Respuesta
1

¿De qué manera las insertas? Cuando metes una imagen a un archivo Excel, este almacena una referencia del bitmap en su proyecto por lo que la imagen siempre estará disponible dentro del archivo. Ahora, si estas trabajando macros y estas usando como referencia la "RUTA" de la carpeta, no te va a funcionar. Ya había respondido una pregunta parecida aquí:

Guardar imagen en una macro Excel

Dale un vistazo a ver si es lo que necesitas

Las imagenes son insertadas con esta macro:

Sub insertarimagen()
Dim RutaActual As String
Dim Rangomagen As Range
Dim shp As Object
RutaActual = ThisWorkbook.Path
ActiveSheet.Range("S8").Select
Do While ActiveCell.Offset(0, 0).Value <> Empty
    Set RangoImagen = ActiveCell.Offset(0, 0)
    ActiveSheet.Pictures.Insert (RutaActual & "\Imagen\" & RangoImagen.Value & ".jpg")
    ActiveCell.Offset(0, 1).Select
Loop
End Sub

Como te digo al compartir el archivo con otra persona, esta no puede visualizar las imágenes insertadas, obviamente debido a que no comparto la carpeta de las fotos.

La idea es ejecutar la macro, guardar y que las fotos formen parte del archivo Excel, así cuando se comparta el archivo se puedan visualizar las fotos.

Es justo lo que te dije, las imagenes si forman parte del archivo, pero si para "visualizarlas" estas usando una macro que hace referencia a la ruta, obviamente no le funciona en otra PC. La respuesta a su pregunta esta en el enlace que le di de una pregunta parecida a la suya.

No entendí la macro, la que te presente me la pasaron, seri mucho pedir me pasaras el código que necesito.

El problema no esta en como las insertas, esta en como las muestras. Deberías decirme como muestras las imágenes al usuario, ¿usas una macro para eso? ¿Puedes poner una imagen de tu libro o compartirlo?

Las 9 fotos son ingresadas desde la celada S8 hasta la celda AA8, las fotos me son entregadas en una carpeta llamada fotos y numeradas del 1 al 9 (en el mismo orden que se colocaran), lo que pasa es que debo llenar a darío más de 50 de estos formatos y compartir por correo el archivo excel. (Solo el archivo sin la carpeta)

Cuando tu compartes el archivo con otra persona, y esa persona lo abre en su computadora, ¿las imágenes no están en la hoja? Por ejemplo si tu me mandas ese archivo a mi, ¿cuándo yo lo abra no podre ver las imágenes? ¿Es lo que quieres decir? Eso es raro, ¿puedes compartir alguno de esos archivos conmigo? Las imágenes deberían quedarse en la hoja, no importa en que PC estén.

Pero como dije antes, si por ejemplo, quieres abrir una de las imágenes en un UserForm con VBA o hacer cualquier manipulación con VBA, y la macro esta usando la "RUTA", obviamente no la encuentra porque la ruta no existe.

Si las inserto en forma manual no hay problema con el archivo, el problema es si la inserción lo hago con la macro que me pasaron.

Ah si, puede ser porque estas usando un método que tal vez no guarda la referencia en el objeto.

Me refiero a esta linea:

ActiveSheet.Pictures.Insert

La manera correcta seria usando Shapes. AddPicture

Que de hecho uno de sus parámetros es SaveWithDocument

Dame unos minutos para arreglarte esa macro y hacerte una que funcione usando el método Shapes

Prueba este código, ajusta lo que sea necesario. A mi personalmente no me gusta hacer el loop como lo estas haciendo, pero no quise cambiarte mucho la forma que lo tienes. Pruébalo:

Sub insertarimagen()
Dim RutaActual As String, imgPath As String
Dim Rangomagen As Range
Dim shp As Object
RutaActual = ThisWorkbook.Path
ActiveSheet.Range("S8").Select
Do While ActiveCell.Value <> Empty
    imgPath = RutaActual & "\Imagen\" & ActiveCell.Value & ".jpg"
    Set shp = Application.ActiveSheet.Shapes.AddPicture(imgPath, False, True, 1, 1, 1, 1)
    shp.ScaleHeight 1, True
    shp.ScaleWidth 1, True
    shp.Top = Cells(8, ActiveCell.Column).Top
    shp.Left = Cells(8, ActiveCell.Column).Left
    'ActiveSheet.Pictures.Insert (RutaActual & "\Imagen\" & RangoImagen.Value & ".jpg")
    ActiveCell.Offset(0, 1).Select
Loop
End Sub

Si tienes acceso a otra computadora, pasa el archivo para alla y prueba que las imagenes esten disponibles.

No inserta la imagen.

Primero lo corrí de frente y no hizo nada, luego lo cori con "F8" hace el cambio de celda pero no inserta la foto

Raro, a mi me funcionó, aunque como dije la manera que haces el loop no es la que yo usaría, tampoco la forma que compruebas si la celda esta vacía.

Sub insertarimagen()
Dim RutaActual As String, imgPath As String
Dim Rangomagen As Range
Dim shp As Object
RutaActual = ThisWorkbook.Path
ActiveSheet.Range("S8").Select
Do While Not IsEmpty(ActiveCell)
    imgPath = RutaActual & "\Imagen\" & ActiveCell.Value & ".jpg"
    Set shp = ActiveSheet.Shapes.AddPicture(imgPath, False, True, 1, 1, 1, 1)
    shp.ScaleHeight 1, True
    shp.ScaleWidth 1, True
    shp.Top = Cells(8, ActiveCell.Column).Top
    shp.Left = Cells(8, ActiveCell.Column).Left
    ActiveCell.Offset(0, 1).Select
Loop
End Sub

Si no te funciona tampoco, podrías compartir el libro para revisarlo.

PD: ¿Qué version de excel usas?

Uso Office 2013, te dejo un link con el excel que uso de modelo y unas imagens de prueba

https://drive.google.com/open?id=1zgrU9pnUzX_8z8AsumRj7W87RafrMSq0 

PD: lo probe en un Office 2016 y me salio este error:

Gracias solo cambie los  valores e esta fila:

Set shp = ActiveSheet.Shapes.AddPicture(imgPath, False, True, 240, 240, 240, 240)

gracias por tu ayuda

Disculpa tuve que salir.. me alegra que ya te haya funcionado :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas