En hojas que manejan bases de datos de personal o de inventarios se requiere incluir una foto con la descripción o la información. En esta entrada veremos como insertarla. El formato depende de ti.
1. Se crea una carpeta con el nombre “fotos” dentro de la carpeta donde crearemos esta hoja de Excel. En ella guardamos las imágenes, de preferencia con clave
2. Hay que crear una hoja de datos. Para este ejemplo usaré la hoja 2 de un libro nuevo
3. En la columna A escribo mi lista de nombres y en la B los nombres de los archivos de las fotos
4. A los datos de la columna A (A2:A4) les cambio su denominación a “nombres” para mi lista de validación
5. Al rango de A2:B4 le cambio su denominación a “datos” para la fórmula de búsqueda
6. En la hoja 1 se pone en A2 el título “Nombre”, B2 el título “Clave” y a C2 el título “Foto”
7. En A3 creo una lista desplegable. Para ello voy a Datos – Validación de datos y cambio la configuración a Lista y llamo a “nombres”
8. En B3 se pone la siguiente fórmula: Nota. Cambiar la fórmula por consultav si no funciona el buscarv por las versiones
=buscarv(A2,datos,2,FALSO)
9. Entrar a Programador e introducir este macro. Es importante señalar que este tipo Worksheet_Change reconoce cualquier cambio que ocurra en la hoja. Hay que grabarlo en la hoja1 (donde se utilizará) y se maneja como Private
Private Sub Worksheet_Change(ByVal Target As Range)
‘ Trae una imagen de acuerdo al valor de una celda
On Error Resume Next ‘ Si ocurre un error sale del macro
If Target.Cells = Range(«A3») Then ‘ Si hay cambio en el valor que se encuentra en A3
foto = Range(«B3»).Value ‘ Trae el nombre del archivo que está en B3
Application.ScreenUpdating = False ‘No actualiza la pantalla
ruta = ActiveWorkbook.Path & «\fotos\» & foto ‘ Carpeta donde se encuentran las fotos (es donde está guardada la hoja y dentro la carpeta fotos)
Me.Shapes(«fotoanterior»).Delete ‘ Borra la foto anterior
Range(«C3»).Select ‘ Celda donde se colocará la fotografía
Me.Pictures.Insert(ruta).Select ‘ Inserta la imagen
With Selection
.Name = «fotoanterior» ‘ Le da un nombre para borrarlo si se vuelve a cambiar
.Placement = xlMoveAndSize ‘ Lugar y posición
.PrintObject = True ‘ Impresión
.ShapeRange.LockAspectRatio = msoFalse ‘ Modificación proporcional de la imagen
.ShapeRange.Height = 85# ‘ Alto en pixeles
.ShapeRange.Width = 65# ‘ Ancho en pixeles
.ShapeRange.Rotation = 0# ‘ Angulo de rotación
End With
Application.ScreenUpdating = True ‘Actualiza la pantalla
End If
End Sub
10. Guardar la hoja habilitada para macros
11. Cada vez que se cambie el nombre la fotografía que corresponde se coloca automáticamente en C3