Como inserir imagens usando Excel VBA

Índice:

Anonim

Olá! Tentando balançar o painel com imagens significativas. Ou apenas tentando inserir uma imagem na célula do Excel VBA. Bem, você não pode inserir imagens em células do Excel, mas você pode redimensioná-las para caber nas células do Excel. Fazê-lo manualmente levará muito tempo e é irritante. Então qual é a solução? Você adivinhou certo, uma macro VBA. Vamos codificar agora.

Abaixo está o código vba do excel para inserir imagem de uma pasta em uma célula ou um determinado intervalo. Pressione Alt + F11, insira um módulo e copie este código.

Não se preocupe, eu expliquei abaixo para que você possa modificá-lo de acordo com suas necessidades.

Inserir imagem na célula do Excel com VBA em uma célula ou um determinado intervalo

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

End Sub
Sub InsertPictureInRange (PictureFileName As String, TargetCells As Range)

'insere uma imagem e a redimensiona para caber no intervalo TargetCells

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

If TypeName (ActiveSheet) "Worksheet" Then Exit Sub

Se Dir (PictureFileName) = "" Então saia do Sub

'importar foto

Defina p = ActiveSheet.Pictures.Insert (PictureFileName)

'determinar posições

Com TargetCells

t = .Top

l = .Esquerda

w = .Offset (0, .Columns.Count) .Left - .Left

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

Terminar com

'posicionar imagem

Com p

.Top = t

.Esquerda = l

.Width = w

.Altura = h

Terminar com

Definir p = Nada

End Sub

Explicação:

Parte 1:

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

End Sub

A sub-rotina acima apenas chama nossa sub-rotina principal InsertPictureInRange que leva apenas dois argumentos. Primeiro o endereço do arquivo de imagem com seu nome e segundo Faixa onde deseja inserir a imagem no Excel.

Parte 2:

Sub InsertPictureInRange (PictureFileName As String, TargetCells As Range) 'insere uma imagem e a redimensiona para caber em TargetCells rangeDim p As Object, t As Double, l As Double, w As Double, h As Double

If TypeName (ActiveSheet) "Worksheet" Then Exit Sub

Se Dir (PictureFileName) = "" Então saia do Sub

'importar foto

Defina p = ActiveSheet.Pictures.Insert (PictureFileName)

'determinar posições

Com TargetCells

t = .Top

l = .Esquerda

w = .Offset (0, .Columns.Count) .Left - .Left

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

Terminar com

'posicionar imagem

Com p

.Top = t

.Esquerda = l

.Width = w

.Altura = h

Terminar com

Definir p = Nada

End Sub

Esta é a sub-rotina principal que insere e redimensiona a imagem para caber no intervalo fornecido. Vamos investigar.

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

Esta linha é apenas uma declaração de variável de que precisaremos. Nota p Como a variável do objeto. Esta variável conterá nossa imagem.

If TypeName (ActiveSheet) "Worksheet" Then Exit Sub

Ele verifica se a Activesheet é uma planilha ou não. Caso contrário, ele sairá do código imediatamente e nada acontecerá.

Se Dir (PictureFileName) = "" Então saia do Sub

Verifique se você forneceu um endereço para a imagem para inserir uma foto na célula do Excel. Se você não o tiver fornecido, ele será encerrado imediatamente e nada acontecerá.

Defina p = ActiveSheet.Pictures.Insert (PictureFileName)

Agora, esta é a linha mais importante. Nesta linha, estamos usando a função Insert do Activesheet. Pictures objeto e colocá-lo no objeto p que declaramos anteriormente. Agora, usando p, podemos ajustar facilmente a largura e o comprimento da imagem.

Com TargetCells t = .Top l = .Left w = .Offset (0, .Columns.Count) .Left - .Left h = .Offset (.Rows.Count, 0) .Top - .Top End With 

Este segmento obtém apenas Comprimento, Largura, Superior e Esquerda do intervalo fornecido.

Com p .Top = t .Left = l .Width = w Height = h End With

Esta parte ajusta a imagem para um determinado intervalo. E está feito. Por último, nós o libertamos definindo-o como nada.

Definir p = Nada

Esta linha libera memória.

Este código funcionará no Excel 2016, Excel 2013, Excel 2010 e Excel 2007.

Aqui eu queria inserir a imagem no intervalo A1: C10. Para fazer isso, modifiquei meu código abaixo

Sub TestInsertPictureInRange () InsertPictureInRange "C: \ Users \ Manish Singh \ Downloads \ biker.jpg", _Faixa("A1: C10")

End Sub

E é isso que eu tenho. Exatamente o que eu queria.


Então sim. Use este código para inserir uma imagem na célula ou intervalo do Excel. Brinque com o código. Tente inserir formatos diferentes, faixas estranhas e veja o que acontece. Se você tiver alguma dúvida ou estiver enfrentando algum desafio, use a seção de comentários abaixo para me perguntar.
⇬ Fazer download do arquivo

Inserir imagens usando VBA no Microsoft Excel 2016

Artigos populares:

50 atalhos do Excel para aumentar sua produtividade

Como usar a função PROCV no Excel

Como usar a função CONT.SE no Excel

Como usar a função SUMIF no Excel