Здрасти! Опитваме се да разклатим таблото за управление със смислени снимки. Или просто се опитвате да вмъкнете картина в клетка Excel VBA. Е, не можете да вмъквате снимки в Excel клетки, но можете да ги преоразмерите, за да се поберат в Excel. Правенето му ръчно ще отнеме много време и е досадно. И така, какво е решението? Правилно се досещате, VBA макрос. Сега ще кодираме.
По -долу е кодът на excel vba за вмъкване на картина от папка в клетка или даден диапазон. Натиснете Alt+F11, поставете модул и копирайте този код.
Не се притеснявайте, обясних го по -долу, за да можете да го промените според вашите нужди.
Вмъкване на картина в клетка на Excel с VBA в клетка или зададен диапазон
Sub TestInsertPictureInRange () InsertPictureInRange "C: \ Име на папката \ PictureFileName.gif", _Range ("B5: D10")
End Sub 'вмъква картина и я преоразмерява, за да пасне на диапазона TargetCells Dim p като обект, t като двоен, l като двоен, w като двоен, h като двоен Ако TypeName (ActiveSheet) "Работен лист" След това излезте от Sub Ако Dir (PictureFileName) = "" След това излезте от Sub 'импортиране на снимка Задайте p = ActiveSheet.Pictures.Insert (PictureFileName) 'определяне на позиции С TargetCells t =. Най -отгоре l = .Ляво w = .Offset (0, .Columns.Count) .Left - .Left h = .Offset (.Rows.Count, 0) .Top - .Top Край с 'снимка на позицията С т .Top = t .Ляво = l .Ширина = w .Височина = h Край с Задайте р = Нищо End Sub |
Обяснение:
Част 1:
Sub TestInsertPictureInRange () InsertPictureInRange "C: \ Име на папката \ PictureFileName.gif", _Range ("B5: D10")
End Sub |
Горната подпрограма просто извиква нашата основна подпрограма InsertPictureInRange, която приема само два аргумента. Първо адресът на файла с изображение с неговото име и втори диапазон, където искате да вмъкнете картината в Excel.
Част 2:
Sub InsertPictureInRange (PictureFileName As String, TargetCells As Range) 'вмъква картина и я преоразмерява, за да пасне на TargetCells диапазона Dim p As Object, t As Double, l As Double, w As Double, h As Double
Ако TypeName (ActiveSheet) "Работен лист" След това излезте от Sub Ако Dir (PictureFileName) = "" След това излезте от Sub 'импортиране на снимка Задайте p = ActiveSheet.Pictures.Insert (PictureFileName) 'определяне на позиции С TargetCells t = .Топ l = .Ляво w = .Offset (0, .Columns.Count) .Left - .Left h = .Offset (.Rows.Count, 0) .Top - .Top Край с 'снимка на позицията С т .Top = t .Ляво = l .Ширина = w .Височина = h Край с Задайте р = Нищо End Sub |
Това е основната подпрограма, която вмъква и преоразмерява картината, за да пасне на дадения диапазон. Нека се вкопаем в него.
Dim p като обект, t като двоен, l като двоен, w като двоен, h като двоен
Този ред е просто декларация на променлива, която ще ни трябва. Забележка p Като променлива на обекта. Тази променлива ще държи нашата картина.
Ако TypeName (ActiveSheet) "Работен лист" След това излезте от Sub
Той проверява дали Activesheet е работен лист или не. Ако не го направи, той веднага ще излезе от кода и нищо няма да се случи.
Ако Dir (PictureFileName) = "" След това излезте от Sub
Проверете дали сте предоставили адрес на изображението, за да вмъкнете снимка в Excel клетката. Ако не сте го предоставили, той ще излезе незабавно и нищо няма да се случи.
Задайте p = ActiveSheet.Pictures.Insert (PictureFileName)
Това е най -важната линия. В този ред използваме функцията Insert на Activesheet. Снимки обект и го поставете в обекта p, който декларирахме по -рано. Сега с помощта на p можем лесно да регулираме ширината и дължината на изображението.
С TargetCells t = .Top l = .Left w = .Offset (0, .Columns.Count) .Left - .Left h = .Offset (.Rows.Count, 0) .Top - .Top End With
Този сегмент просто получава дължина, ширина, отгоре и отляво от дадения диапазон.
С p .Top = t. Ляво = l. Ширина = w Височина = h Край с
Тази част настройва изображението към зададения диапазон. И това е направено. И накрая, ние го освобождаваме, като го настройваме на нищо.
Задайте р = Нищо
Тази линия освобождава паметта.
Този код ще работи в Excel 2016, Excel 2013, Excel 2010 и Excel 2007.
Тук исках да вмъкна изображението в диапазон A1: C10. За да направя това, промених кода си по -долу
Sub TestInsertPictureInRange () InsertPictureInRange "C: \ Users \ Manish Singh \ Downloads \ biker.jpg", _Range ("A1: C10")
End Sub |
И това е, което получих. Точно това, което исках.
Така че, да. Използвайте този код, за да вмъкнете картина в Excel клетката или диапазона. Играйте около кода. Опитайте се да вмъкнете различни формати, странни диапазони и вижте какво се случва. Ако имате въпроси или сте изправени пред предизвикателство, използвайте раздела за коментари по -долу, за да ме попитате.
Свали файл
Популярни статии:
50 преки пътища в Excel за повишаване на вашата производителност
Как да използвате функцията VLOOKUP в Excel
Как да използвате функцията COUNTIF в Excel
Как да използвате функцията SUMIF в Excel