Så här infogar du bilder med Excel VBA

Innehållsförteckning:

Anonim

Hallå där! Försöker rocka instrumentbrädan med meningsfulla bilder. Eller bara försöker infoga bild i cell Excel VBA. Tja, du kan inte infoga bilder i excelceller men du kan ändra storlek på den för att passa in i excelceller. Att göra det manuellt tar mycket tid och det är irriterande. Så vad är lösningen? Du gissade rätt, ett VBA -makro. Vi kommer att koda nu.

Nedan finns excel vba -koden för att infoga bild från en mapp i en cell eller ett givet intervall. Tryck på Alt+F11, sätt in en modul och kopiera den här koden.

Oroa dig inte, jag har förklarat det nedan så att du kan ändra det efter dina behov.

Infoga bild i Excel -cell med VBA i en cell eller ett givet intervall

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

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

'infogar en bild och ändrar storlek för att passa TargetCells -intervallet

Dim p Som objekt, t Som Dubbel, l Som Dubbel, w Som Dubbel, h Som Dubbel

Om TypeName (ActiveSheet) "Arbetsblad" Avsluta sedan Sub

Om Dir (PictureFileName) = "" Avsluta sedan Sub

'importera bild

Ange p = ActiveSheet.Pictures.Insert (PictureFileName)

'bestämma positioner

Med TargetCells

t = .Topp

l = .Vänster

w = .Offset (0, .Columns.Count) .Vänster - .Vänster

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

Sluta med

'positionsbild

Med s

.Top = t

.Vänster = l

.Bredd = w

.Höjd = h

Sluta med

Ange p = ingenting

Avsluta Sub

Förklaring:

Del 1:

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

Avsluta Sub

Ovanstående underprogram kallar bara vår huvudsubrutin InsertPictureInRange som bara tar två argument. Först adressen till bildfilen med dess namn och andra intervall där du vill infoga bilden i Excel.

Del 2:

Sub InsertPictureInRange (PictureFileName As String, TargetCells As Range) 'infogar en bild och ändrar storlek på den så att den passar TargetCells -intervallet Dim objekt som objekt, t som dubbel, l som dubbel, w som dubbel, h som dubbel

Om TypeName (ActiveSheet) "Arbetsblad" Avsluta sedan Sub

Om Dir (PictureFileName) = "" Avsluta sedan Sub

'importera bild

Ange p = ActiveSheet.Pictures.Insert (PictureFileName)

'bestämma positioner

Med TargetCells

t = .Topp

l = .Vänster

w = .Offset (0, .Columns.Count) .Vänster - .Vänster

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

Sluta med

'positionsbild

Med s

.Top = t

.Vänster = l

.Bredd = w

.Höjd = h

Sluta med

Ställ in p = ingenting

Avsluta Sub

Detta är den huvudsakliga subrutinen som infogar och ändrar storlek på bilden för att passa det givna intervallet. Låt oss gräva i det.

Dim p Som objekt, t Som Dubbel, l Som Dubbel, w Som Dubbel, h Som Dubbel

Den här raden är bara en variabel deklaration som vi kommer att behöva. Not p Som objektvariabel. Denna variabel kommer att hålla vår bild.

Om TypeName (ActiveSheet) "Arbetsblad" Avsluta sedan Sub

Den kontrollerar om Activesheet är ett kalkylblad eller inte. Om den inte gör det kommer den att lämna koden omedelbart och ingenting kommer att hända.

Om Dir (PictureFileName) = "" Avsluta sedan Sub

Kontrollera att du har angett en adress för bilden för att infoga ett foto i excelcellen. Om du inte har tillhandahållit det, kommer det att avslutas omedelbart och ingenting kommer att hända.

Ange p = ActiveSheet.Pictures.Insert (PictureFileName)

Nu är detta den viktigaste raden. På den här raden använder vi funktionen Infoga i Activesheet. Bilder objekt och lägg det i objektet p som vi deklarerade tidigare. Nu med p kan vi enkelt justera bildens bredd och längd.

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

Detta segment får bara längd, bredd, topp och vänster från det givna intervallet.

Med s. Top = t. Vänster = l. Bredd = w Höjd = h Avsluta med

Denna del justerar bilden till det angivna intervallet. Och det är klart. Slutligen släppte vi det gratis genom att sätta det till ingenting.

Ange p = ingenting

Den här linjens fria minne.

Denna kod fungerar i Excel 2016, Excel 2013, Excel 2010 och Excel 2007.

Här ville jag infoga bilden i intervall A1: C10. För att göra detta ändrade jag min kod nedan

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

Avsluta Sub

Och det här är vad jag fick. Precis vad jag ville.


Så ja. Använd den här koden för att infoga en bild i Excel -cellen eller intervallet. Spela runt koden. Försök att infoga olika format, konstiga intervall och se vad som händer. Om du har några frågor eller står inför någon utmaning, använd nedanstående kommentarsektion för att fråga mig.
Nedladdning fil

Infoga bilder med VBA i Microsoft Excel 2016

Populära artiklar:

50 Excel -genvägar för att öka din produktivitet

Så här använder du VLOOKUP -funktionen i Excel

Så här använder du funktionen COUNTIF i Excel

Hur man använder SUMIF -funktionen i Excel