Como puedo enviar un foto que lo tengo como ruta en la celda a1 de la hoja1 a un cuadro de imagen que se encuentra en la hoja3

Necesito de su apoyo para poder culminar un proyecto en VBA Excel.

EL proyecto consiste en almacenar datos de trabajadores de una empresa; ahora, estoy adicionando un userform para consulta de personal e imprimirlo, lo que hace el userform es solicitar la información de la hoja de datos (hoja1) y enviarlo a la hoja3 que la tengo trabajada con macros para que se rellene los espacios solicitados, con encabezados tipo de letras, tamaño, etc. Hasta allí esta todo bien, Lo que no logro es enviar tambien la foto al cuadro de imagen para que me aparezca en esta hoja, ya que la ruta de esta imagen se encuentra también almacenada en la hoja datos.

Lo que pretendo es imprimir la hoja3 con los datos y fotos del trabajador en consulta.

2 respuestas

Respuesta
2

Lo que tienes que hacer es cargar la imagen desde la ruta

Suponiendo lo siguiente, en la celda B3 de la hoja1 está la ruta, en la celda B4 de la hoja1 está el nombre del archivo, por ejemplo:

C:\trabajo\datos\

Image008.jpg

Notas: al final de la ruta tienes que poner la diagonal \

Al final del archivo tienes que poner la extensión.


En la macro también tienes que indicar la celda donde quieres poner la foto, si es una celda combinada, tienes que poner el rango de celdas. En este ejemplo, estoy poniendo la celda D4 en la hoja3

Sub Insertar_Imagen()
'Por.Dante Amor
    ruta = Sheets("Hoja1").Range("B3")      'hoja de datos y celda con la ruta
    arch = Sheets("Hoja1").Range("B4")      'hoja de datos y celda con el nombre del archivo
    '
    If Dir(ruta & arch) = "" Then
        MsgBox "El archivo no existe"
        Exit Sub
    End If
    '
    Set h3 = Sheets("Hoja3")                'hoja a imprimir
    Set celda = h3.Range("D4")              'celda o rango de celdas donde va la foto
    '
    'Borramos la foto anterior
    On Error Resume Next
    h3.DrawingObjects("foto").Delete
    On Error GoTo 0
    '
    'Insertamos la nueva foto
    With h3.Pictures.Insert(ruta & arch)
        .Name = "foto"
        .Placement = xlMoveAndSize
        .ShapeRange.LockAspectRatio = msoFalse
        .Top = celda.Top
        .Left = celda.Left
        .Width = celda.Width
        .Height = celda.Height
    End With
End Sub

Prueba la macro para insertar la imagen en la hoja3. Después adapta el código en tu userform.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

¡Gracias! Dante, me funciono muy bien, hice las adaptaciones correspondientes en mi proyecto, y funciona muy bien.

Saludos.

Tengo una ultima consulta.

Como puedo hacer para limpiar la hoja de impresión, es decir limpiar las áreas con información e imagen para poder enviar una nueva consulta, logre hacer el proceso mediante una macro y funciona, ahora, el problema está cuando vuelvo a presionar el botón para ejecutar la macro por segunda vez en la hoja ya limpia me sale el error 1004. Esto es lo que tengo

Private Sub CommandButton4_Click()

ActiveSheet.Shapes.Range(Array("foto")).Select
Selection.Delete
Range("A3:H3").Select
Selection.ClearContents
Range("A4:H4").Select
Selection.ClearContents
Range("D9:D39").Select
Selection.ClearContents
Range("B42:H46").Select
Selection.ClearContents
Range("A2:H2").Select

MsgBox "Se eliminaron los datos de la hoja", , Titulo
End Sub

El error me sale en:

ActiveSheet.Shapes.Range(Array("foto")).Select

Puede ser que la imagen llamada "foto" ya no existe o tiene otro nombre.

En tal caso puedes utilizar lo siguiente:

On error Resume Next
ActiveSheet.Shapes.Range(Array("foto")).Select
Selection.Delete
On error Goto 0

Si la imagen no existe, ya no te envía error y brinca a la siguiente línea. Si la imagen Sí existe, entonces la borra.

Te agradezco la ayuda.

Estoy aplicando la info que me has enviado, pero al ejecutarlo en la hoja que ya se encuentra en blanco sigue eliminando celdas que no debería eliminar. La idea es que el botón que tengo para limpiar la hoja ya no se ejecute más si ya no hay información para eliminar

Con mucho gusto te ayudo con todas tus peticiones.

Crea una nueva pregunta en Todoexpertos.com dentro del tema de microsoft excel. Ahí me describes con detalle lo que necesitas.

Sal u dos

Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas