Insertar Fotografías especificas en celda

A ver si me pueden ayudar.

Tengo un reloj de control de horas de trabajo, el cual hace los marcajes cuando introducimos una ficha de cartulina y el reloj nos marca en la ficha las entradas y salidas.

Normalmente las fichas habría que rellenarlas a mano y en la zona de la imagen, grapar la fotografía del empleado, pero yo he creado esta plantilla en Excel, con la cual puedo rellenarlo e insertar la imagen del empleado.

El tema es que es bastante tedioso estar buscando la imagen e insertarla en la celda correspondiente y me gustaría saber si es posible insertar la imagen desde una carpeta donde estén todas las imágenes referenciadas o bien con nombre y apellido o con el numero de ficha en formato JPG ( Raúl Lopez.jpg ò 49.jpg), teniendo en cuenta el valor de la celda que lleva el nombre y apellido o el valor de la celda con el numero de ficha y que al insertar la imagen no modifique en absoluto los tamaños de las celdas, ya que a la hora de imprimir las fichas, esos tamaños corresponden con las ubicaciones en la ficha física.

Por poner un ejemplo, en la hoja Excel tengo como para imprimir 100 fichas de distintos empleados, y cuando deseo imprimir, le digo que números de página deseo imprimir y así me imprime únicamente las fichas que necesito.

He visto varios tutoriales y formas de insertar imágenes, pero no encuentro la forma de hacerlo automáticamente teniendo como dato el valor de las celdas y el nombre del archivo de imagen.

Igual no es lo mas habitual, pero es el método que he encontrado para poder imprimir las fichas de horas de trabajo con los datos y la imagen, pudiendo imprimir todas o las que necesite de la 1 a la 100.

Gracias y espero que me podáis ayudar con alguna idea.

1 Respuesta

Respuesta
2

Utiliza la siguiente macro.

- Vamos a utilizar el número para encontrar el archivo.

- Cambia en esta línea: "C:\trabajo\images\", el nombre de tu carpeta con las imágenes.

- Cambia en esta línea
For i = 3 To Range("X" & Rows.Count).End(3).Row

El primer 3 por la fila donde empiezan los números de ficha. Y la "X" por la columna donde tienes los números, no importa si está combinada, debes poner la primer columna de la celda combinada.

- También cambia en esta línea la "X"

arch = Dir(ruta & Range("X" & i) & ".jpg")

- Cambia en esta línea

Set rng = Range("C" & i - 1)

La "C" por la columna donde empieza la celda combinada.

_____

Es difícil saber dónde están los números y dónde va la imagen, ya que en tu imagen de la hoja las celdas están combinadas, tal vez haya que hacer algunos ajustes a la macro. Si no funciona, entonces deberás especificar en dónde está cada dato.

Sub Insertar_Fotos()
'Por.Dante Amor
  Dim ruta As String, arch As String
  Dim i As Long
  Dim nTop As Double, nLef As Double, nWid As Double, nHei As Double
  Dim rng As Range
  '
  ruta = "C:\trabajo\images\"
  ActiveSheet.DrawingObjects.Delete
  '
  For i = 3 To Range("X" & Rows.Count).End(3).Row
    arch = Dir(ruta & Range("X" & i) & ".jpg")
    If arch <> "" Then
      Set rng = Range("C" & i - 1)
      If rng.MergeCells Then Set rng = rng.MergeArea
      '
      With rng
        nTop = .Top + 1
        nLef = .Left + 1
        nWid = .Width - 2
        nHei = .Height - 2
      End With
      '
      With ActiveSheet.Pictures.Insert(ruta & arch)
        .Placement = xlMoveAndSize
        .ShapeRange.LockAspectRatio = msoFalse
        .Top = nTop
        .Left = nLef
        .Width = nWid
        .Height = nHei
      End With
    End If
  Next
End Sub

Sigue las Instrucciones para ejecutar la macro

  1. Abre tu archivo de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Para ejecutarla presiona F5

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas