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 ' 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
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?