Macro para formulario e imagen

Hola buen día, nuevamente requiero de tu ayuda
estoy elaborando una base de datos de socios de un gimnasio y los estoy agregando por medio del formulario proporcionado por la Barra de Menu - Datos - Formularios
me gustaría crear una macro que abra un formulario en el cual ingrese los datos de los socios y pueda ingresar la fotografía del mismo.
¿Me podrías ayudar en como puedo generarlo?
Saludos

1 Respuesta

Respuesta
1
Vamos a ver en este tipo de formulario "Prediseñado" por Excel no existe la posibilidad de insertar fotos, tan solo se me ocurre lo siguiente:
El formulario crea campos para introducir datos en la hoja, podemos crear un campo que se denomine foto, y una macro en la hoja para que en función de los datos introducidos en ese campo cree hipervínculo a la foto, por lo tanto haciendo click en ese celda con la tecla Control pulsada te muestre la foto. Te explico:
1º Creas las cabeceras de tu formulario
1 socio nombre apellidos dirección teléfono cuota validez foto
Ahora seleccionadas estas celdas pulsas en Datos>Formulario, aceptas la ventana y te aparece el formulario con los campos creados.
Creas una carpeta para tener todas las fotos de los socios/clientes y cuando las guardes hay que pensar en darle un nombre a la foto de un dato que vas a introducir en el formulario, bien el numero de socio o bien el nombre pero tiene que ser exacto el dato introducido en el Formulario que el nombre de la foto, por ejemplo si eliges el nombre y apellidos pondrías Juan Perez Fernández pues la foto se llamará exactamente igual no sirven espacios barras o cualquier otro carácter que no permita a Windows identificar el archivo.
Ejemplo:
          A B C D E F G H
1 socio nombre apellidos dirección teléfono cuota validez foto
     ¿001 JUAN PEREZ PEREZ C/ LUNA 5 999999999 30?        01/09/09    X
En función del ejemplo en la columna H en la columna FOTO la macro te pondrá "Foto Socio" y haciendo doble click en esa celda te pedirá permiso para abrir la foto y te la mostrará, para hacer eso tenemos que hacer lo siguiente:
1º Estando en tu hoja de Excel (supongamos que es la Hoja1) pulsas Alt+F11 y se abrirá el editor de VBA en la columna de la izquierda verás los objetos que contiene el Libro que por defecto son Hoja1, Hoja2, Hoja3 y ThisWorkbook. Como estamos en la Hoja1 hacemos doble click sobre ese icono (Hoja1) y se te abrirá una pantalla en blanco en esa pantalla copias y pegas esta macro:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then 'Si la Col FOTO es la H si no lo cambias A=1, B=2.....
If Target.Address <> "$H$1" Then 'Si tu Col no es la H lo cambias
nombre = Target.Offset(0, -5).Value 'Toma el nombre de la Col B
apellidos = Target.Offset(0, -4).Value 'Toma los apellidos de la Col C
imagen = nombre & " " & apellidos & ".jpg"
Target.Select
If Target.Value = "" Then
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
        "C:\Carpeta de Fotos\" & imagen & " ", TextToDisplay:= _
        "Foto Socio" 'Tienes que poner la ruta de la carpeta donde estan las fotos
End If
End If
End If
End Sub
2º Abres tu formulario y vas rellenado socios cuando hayas terminado cierras el formulario, y te sitúas en la celda de la Col FOTO de cada socio, haces doble click en la celda y sin escribir nada pulsas Enter en esa celda la macro escribirá Foto Socio y haciendo doble click en ella se abrirá la foto.
Espero que te sirva y entiendas el proceso, si necesitas algo más me lo dices, si te ha servido puntúa y finaliza la consulta, un comentario siempre es bienvenido. Gracias.
>Un saludo
>Julio
Julio buen día gracias por tu respuesta, estoy haciendo las pruebas como lo indicas pero me da como resultado "no se puede abrir el archivo especificado"
Hice un ejemplo tal como lo mencionas
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then 'Si la Col FOTO es la H si no lo cambias A=1, B=2.....
If Target.Address <> "$H$1" Then
nombre = Target.Offset(0, -5).Value 'Toma el nombre de la Col B
apellidos = Target.Offset(0, -4).Value 'Toma los apellidos de la Col C
imagen = nombre & " " & apellidos & ".jpg"
Target.Select
If Target.Value = "" Then
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
        "C:\Fotos\" & imagen & " ", TextToDisplay:= _
        "Foto Socio" 'Tienes que poner la ruta de la carpeta donde estan las fotos
End If
End If
End If
End Sub
Saludos
Disculpa cambie la columna y no los valores tienes que ponerlo así
Col B el nombre (Juan)
Col C los apellidos (Perez Perez)
Col DE lo que quieras
Col E lo que quieras
Col F lo que quieras
Col G lo que quieras
Col H es donde harás doble click y después enter
Según has puesto en la macro en la unidad C:\ tienes que crear una carpeta que se llama Fotos y dentro tienes que tener una foto que se llame (según el ejemplo) Juan Perez Perez.jpg ( el punto y las letras son el tipo de archivo si no tienes las fotos en .jpg cambialo en la macro por tus extensiones .jpeg .gif .bmp en fin en el formato que tengas las fotos.
La macro para estas columnas quedaría así:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then 'Si la Col FOTO es la H si no lo cambias A=1, B=2.....
If Target.Address <> "$H$1" Then
nombre = Target.Offset(0, -6).Value 'Toma el nombre de la Col B
apellidos = Target.Offset(0, -5).Value 'Toma los apellidos de la Col C
imagen = nombre & " " & apellidos & ".jpg"
Target.Select
If Target.Value = "" Then
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
        "C:\Fotos\" & imagen & " ", TextToDisplay:= _
        "Foto Socio" 'Tienes que poner la ruta de la carpeta donde estan las fotos
End If
End If
End If
End Sub
Después de crear el hipervínculo cuando pongas el cursor en el texto azul "Foto Socio" te debe de aparecer una ventana con la ruta de la foto que sería en este caso:
C:\Fotos\Juan Perez Perez.jpg
Y al hacer click en ella te aparecerá una ventana de aviso la aceptas y se abrirá la foto, con el programa predeterminado que tengas para abrir ese tipo de archivos.
Prueba y me cuentas
>Un saludo
>Julio
Julio lo que pasa que no me lo estaba abriendo porque solo me tomaba un valor de los dos que se le requerían que son "nombre-apellido" pero ya lo deje con un solo valor que es el numero de socio y funciona muy bien
Sera de mucha ayuda como lo enviaste, si sabes posteriormente de como abrirlo en la misma hoja de excel seria excelente
Te agradezco mucho, eres bueno en esto!
Saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas