Cómo insertar imágenes usando Excel VBA

Tabla de contenido:

Anonim

¡Hola! Intentando sacudir el tablero con imágenes significativas. O simplemente tratando de insertar una imagen en la celda Excel VBA. Bueno, no puede insertar imágenes en celdas de Excel, pero puede cambiar su tamaño para que quepan en la celda de Excel. Hacerlo manualmente llevará mucho tiempo y es molesto. ¿Entonces, cuál es la solución? Lo adivinaste bien, una macro VBA. Codificaremos ahora.

A continuación se muestra el código vba de Excel para insertar una imagen de una carpeta en una celda o en un rango determinado. Presione Alt + F11, inserte un módulo y copie este código.

No te preocupes, te lo he explicado a continuación para que puedas modificarlo según tus necesidades.

Inserte una imagen en una celda de Excel con VBA en una celda o un rango dado

Sub TestInsertPictureInRange () InsertPictureInRange "C: \ FolderName \ PictureFileName.gif", _Range ("B5: D10")

End Sub
Sub InsertPictureInRange (PictureFileName como cadena, TargetCells como rango)

'inserta una imagen y la cambia de tamaño para que se ajuste al rango de TargetCells

Dim p como objeto, t como doble, l como doble, w como doble, h como doble

Si TypeName (ActiveSheet) "Worksheet", salga de Sub

Si Dir (PictureFileName) = "" Entonces salga de Sub

'importar imagen

Establecer p = ActiveSheet.Pictures.Insert (PictureFileName)

'determinar posiciones

Con TargetCells

t = .Top

l = .Izquierda

w = .Desplazamiento (0, .Columnas.Cuenta) .Izquierda - .Izquierda

h = .Desplazamiento (.Rows.Count, 0) .Top - .Top

Terminar con

'imagen de posición

Con p

.Top = t

.Izquierda = l

.Ancho = w

.Altura = h

Terminar con

Establecer p = Nada

End Sub

Explicación:

Parte 1:

Sub TestInsertPictureInRange () InsertPictureInRange "C: \ FolderName \ PictureFileName.gif", _Range ("B5: D10")

End Sub

La subrutina anterior solo llama a nuestra subrutina principal InsertPictureInRange que toma solo dos argumentos. Primero la dirección del archivo de imagen con su nombre y segundo Rango donde desea insertar la imagen en Excel.

Parte 2:

Sub InsertPictureInRange (PictureFileName As String, TargetCells As Range) 'inserta una imagen y la cambia de tamaño para que se ajuste al rango de TargetCells Dim p As Object, t As Double, l As Double, w As Double, h As Double

Si TypeName (ActiveSheet) "Worksheet", salga de Sub

Si Dir (PictureFileName) = "" Entonces salga de Sub

'importar imagen

Establecer p = ActiveSheet.Pictures.Insert (PictureFileName)

'determinar posiciones

Con TargetCells

t = .Top

l = .Izquierda

w = .Desplazamiento (0, .Columnas.Cuenta) .Izquierda - .Izquierda

h = .Desplazamiento (.Rows.Count, 0) .Top - .Top

Terminar con

'imagen de posición

Con p

.Top = t

.Izquierda = l

.Ancho = w

.Altura = h

Terminar con

Establecer p = Nada

End Sub

Esta es la subrutina principal que inserta y cambia el tamaño de la imagen para que se ajuste al rango dado. Profundicemos en ello.

Dim p como objeto, t como doble, l como doble, w como doble, h como doble

Esta línea es solo una declaración de variable que necesitaremos. Nota p Como variable de objeto. Esta variable contendrá nuestra imagen.

Si TypeName (ActiveSheet) "Worksheet", salga de Sub

Comprueba si la hoja activa es una hoja de trabajo o no. Si no es así, saldrá del código inmediatamente y no sucederá nada.

Si Dir (PictureFileName) = "" Entonces salga de Sub

Verifique que haya proporcionado una dirección para que la imagen inserte una foto en la celda de Excel. Si no lo ha proporcionado, se cerrará inmediatamente y no sucederá nada.

Establecer p = ActiveSheet.Pictures.Insert (PictureFileName)

Ahora, esta es la línea más importante. En esta línea, estamos usando la función Insertar de Activesheet. Imágenes del objeto y ponerlo en el objeto p que declaramos anteriormente. Ahora usando p podemos ajustar fácilmente el ancho y largo de la imagen.

Con TargetCells t = .Top l = .Left w = .Offset (0, .Columns.Count) .Left - .Left h = .Offset (.Rows.Count, 0) .Top - .Top Finalizar con 

Este segmento solo obtiene Longitud, Ancho, Superior e Izquierda del rango dado.

Con p .Top = t .Left = l .Ancho = w Alto = h Termina con

Esta parte ajusta la imagen al rango dado. Y esta hecho. Por último, lo liberamos poniéndolo en nada.

Establecer p = Nada

Esta línea libera la memoria.

Este código funcionará en Excel 2016, Excel 2013, Excel 2010 y Excel 2007.

Aquí quería insertar la imagen en el rango A1: C10. Para hacer esto, modifiqué mi código a continuación

Sub TestInsertPictureInRange () InsertPictureInRange "C: \ Usuarios \ Manish Singh \ Descargas \ biker.jpg", _Distancia("A1: C10")

End Sub

Y esto es lo que obtuve. Exactamente lo que quería.


Así que sí. Use este código para insertar una imagen en la celda o rango de Excel. Juega con el código. Intenta insertar diferentes formatos, rangos extraños y mira qué pasa. Si tiene alguna pregunta o enfrenta algún desafío, use la sección de comentarios a continuación para preguntarme.
Descargar archivo

Insertar imágenes usando VBA en Microsoft Excel 2016

Articulos populares:

50 accesos directos de Excel para aumentar su productividad

Cómo utilizar la función BUSCARV en Excel

Cómo usar la función CONTAR.SI en Excel

Cómo utilizar la función SUMIF en Excel