Macro para imprimir insertando foto excel vba

[Buenos días 

Tengo el siguiente formato y en otra hoja la base de datos (dni, nombre)

uso ésta macro la cual me imprime perfecto.

Sub imprimir()
    Set h1 = Sheets("form") ' formulario
    Set h2 = Sheets("base") ' base de datos
    '
    u = h2.Range("A" & Rows.Count).End(xlUp).Row
    '
    ruta = ThisWorkbook.Path & "\fotos\" ' ruta
    '
    For i = 2 To u
        h1.Range("B2") = h2.Cells(i, "C")
        h1.Range("B3") = h2.Cells(i, "B")
        h1.PrintOut
    Next i
End Sub

Ahora Deseo imprimir incluyendo la foto de cada persona

Tengo una carpeta fotos (la foto de cada persona está guardados con el dni)

¿Cómo imprimo incluyendo la foto ajustando el tamaño?

2 Respuestas

Respuesta
1

Pásame un correo y te envío un user form si quieres y tu le agregas tu base de datos =)

hola disculpa amigo, yo esperaba el aviso de tu parte y ahora me di cuenta que está como spam tu el archivo. gracias voy a revisarlo 

una consulta intento insertar el control image a la hoja y me sale error no se puede insertar el objeto

alguna sugerencia ?

El archivo que te envíe te muestra las fotos dentro de una forma "rectangulo" con el nombre "foto" sino mal recuerdo, ¿no te funciona? Colocando las fotos dentro de la carpeta "Fotos empleados" y cambiando la línea

Ruta = "R:\Nueva carpeta\Fotos empleados\"

por la ruta donde tu tienes la carpeta tendría que funcionarte sin problemas... recuerda que la extensión que le aplique para las fotos fue ".jpg" tienes que ponerle el mismo nombre que esta en tu base de datos a la foto.

rutafoto = ruta & Sheets("Consulta").Range("F10") & ".JPG"

en esta linea te dice que tipo de archivo busca   ".JPG" si tus archivos son PNG tienes que cambiarlo

Al igual que la imagen "noimagen.jpg" ahí tienes que colocar el nombre de la imagen que va a aparecer en caso de no encontrar al empleado en esta línea

ActiveSheet.Shapes("foto").Fill.UserPicture (ruta & "noimagen.jpg")

Revisa esas lineas y me avisas =)

Si quieres te envío el archivo de nuevo, quizás llego dañado

Tu me avisas

Saludos =)

voy hacer pruebas y te aviso gracias 

¿Qué tal salio todo compañero? ¿Todo bien?

Espero que si, saludos =)

Respuesta
1

No sé qué control estás utilizando para poner la foto.

Pero si tienes un Control Image de ActiveX, entonces utiliza el siguiente código:

Sub imprimir()
    Set h1 = Sheets("form") ' formulario
    Set h2 = Sheets("base") ' base de datos
    '
    u = h2.Range("A" & Rows.Count).End(xlUp).Row
    '
    ruta = ThisWorkbook.Path & "\fotos\" ' ruta
    'ruta = "c:\trabajo\imagen\"
    '
    For i = 2 To u
        arch = h2.Cells(i, "B") & ".jpg"
        h1.Image1.Picture = Nothing
        If Dir(ruta & arch) <> "" Then
            h1.Image1.Picture = LoadPicture(ruta & arch)
        End If
        h1.Range("B2") = h2.Cells(i, "C")
        h1.Range("B3") = h2.Cells(i, "B")
        h1.PrintOut
    Next i
End Sub

Cambia ".jpg" por la extensión de tus archivos de fotos.

Para ajustar la foto al tamaño del control image, cambia la propiedad PictureSizeMode a 1fmPictureSizeModeStretch


[Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas