Afbeeldingen invoegen met Excel VBA

Inhoudsopgave:

Anonim

Hoi! Proberen het dashboard te rocken met betekenisvolle foto's. Of probeer gewoon een afbeelding in cel Excel VBA in te voegen. Welnu, u kunt geen afbeeldingen in Excel-cellen invoegen, maar u kunt het formaat wijzigen om in Excel-cellen te passen. Handmatig doen kost veel tijd en is vervelend. Dus wat is de oplossing? Je raadt het goed, een VBA-macro. We gaan nu coderen.

Hieronder staat de Excel vba-code om een ​​afbeelding uit een map in een cel of een bepaald bereik in te voegen. Druk op Alt+F11, voeg een module in en kopieer deze code.

Maak je geen zorgen, ik heb het hieronder uitgelegd, zodat je het kunt aanpassen aan je behoeften.

Afbeelding invoegen in Excel-cel met VBA in een cel of een bepaald bereik

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

Einde sub
Sub InsertPictureInRange (PictureFileName As String, TargetCells As Range)

' voegt een afbeelding in en past het formaat aan zodat het in het TargetCells-bereik past

Dim p als object, t als dubbel, l als dubbel, w als dubbel, h als dubbel

Als TypeNaam (ActiveSheet) "Werkblad" Sluit Sub dan af

If Dir(PictureFileName) = "" Subsub afsluiten

'afbeelding importeren'

Stel p = ActiveSheet.Pictures.Insert (PictureFileName) in

'posities bepalen'

Met doelcellen

t = .Bovenste

l = .Links

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

h = .Offset(.Rijen.Aantal, 0).Boven - .Boven

Eindigt met

'positie foto'

met p

.Bovenste = t

.Links = l

.Breedte = w

.Hoogte = h

Eindigt met

Stel p = Niets in

Einde sub

Uitleg:

Deel 1:

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

Einde sub

De bovenstaande subroutine roept gewoon onze hoofdsubroutine InsertPictureInRange aan waarvoor slechts twee argumenten nodig zijn. Eerst het adres van het afbeeldingsbestand met de naam en het tweede bereik waar u de afbeelding in Excel wilt invoegen.

Deel 2:

Sub InsertPictureInRange(PictureFileName As String, TargetCells As Range)' voegt een afbeelding in en past deze aan zodat deze in het TargetCells-bereik past. Dim p As Object, t As Double, l As Double, w As Double, h As Double

Als TypeNaam (ActiveSheet) "Werkblad" Sluit Sub dan af

If Dir(PictureFileName) = "" Subsub afsluiten

'afbeelding importeren'

Stel p = ActiveSheet.Pictures.Insert (PictureFileName) in

'posities bepalen'

Met doelcellen

t = .Bovenste

l = .Links

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

h = .Offset(.Rijen.Aantal, 0).Boven - .Boven

Eindigt met

'positie foto'

met p

.Bovenste = t

.Links = l

.Breedte = w

.Hoogte = h

Eindigt met

Stel p = Niets in

Einde sub

Dit is de hoofdsubroutine die de afbeelding invoegt en het formaat aanpast om in het opgegeven bereik te passen. Laten we erin graven.

Dim p als object, t als dubbel, l als dubbel, w als dubbel, h als dubbel

Deze regel is slechts een variabele declaratie die we nodig hebben. Opmerking p Als de objectvariabele. Deze variabele zal onze afbeelding bevatten.

Als TypeNaam (ActiveSheet) "Werkblad" Sluit Sub dan af

Het controleert of de Activesheet een werkblad is of niet. Als dit niet het geval is, wordt de code onmiddellijk afgesloten en gebeurt er niets.

If Dir(PictureFileName) = "" Subsub afsluiten

Controleer of u een adres voor de afbeelding hebt opgegeven om een ​​foto in de Excel-cel in te voegen. Als u het niet hebt opgegeven, wordt het onmiddellijk afgesloten en gebeurt er niets.

Stel p = ActiveSheet.Pictures.Insert (PictureFileName) in

Dit is de belangrijkste regel. In deze regel gebruiken we de functie Invoegen van Activesheet. Pictures object en plaats het in het object p dat we eerder hebben aangegeven. Nu we p gebruiken, kunnen we de breedte en lengte van de afbeelding gemakkelijk aanpassen.

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

Dit segment krijgt alleen Lengte, Breedte, Boven en Links uit het opgegeven bereik.

Met p .Boven = t .Links = l .Breedte = w Hoogte = h Einde Met

Dit onderdeel past het beeld aan het opgegeven bereik aan. En het is klaar. Ten slotte hebben we het vrijgemaakt door het op niets in te stellen.

Stel p = Niets in

Het geheugen van deze regel is vrij.

Deze code werkt in Excel 2016, Excel 2013, Excel 2010 en Excel 2007.

Hier wilde ik de afbeelding invoegen in bereik A1:C10. Om dit te doen, heb ik mijn code hieronder aangepast:

SubtestInsertPictureInRange()InsertPictureInRange "C:\Users\Manish Singh\Downloads\biker.jpg", _Bereik("A1:C10")

Einde sub

En dit is wat ik kreeg. Precies wat ik wilde.


Dus ja. Gebruik deze code om een ​​afbeelding in de Excel-cel of het Excel-bereik in te voegen. Speel rond de code. Probeer verschillende formaten, vreemde bereiken in te voegen en kijk wat er gebeurt. Als je vragen hebt of voor een uitdaging staat, gebruik dan de onderstaande opmerkingen om het mij te vragen.
Download bestand

Afbeeldingen invoegen met VBA in Microsoft Excel 2016

Populaire artikels:

50 Excel-snelkoppelingen om uw productiviteit te verhogen

Hoe de VERT.ZOEKEN-functie in Excel te gebruiken?

Hoe de AANTAL.ALS-functie in Excel te gebruiken?

Hoe de SUMIF-functie in Excel te gebruiken?