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