Как да вмъкнете снимки с помощта на Excel VBA

Съдържание:

Anonim

Здрасти! Опитваме се да разклатим таблото за управление със смислени снимки. Или просто се опитвате да вмъкнете картина в клетка Excel VBA. Е, не можете да вмъквате снимки в Excel клетки, но можете да ги преоразмерите, за да се поберат в Excel. Правенето му ръчно ще отнеме много време и е досадно. И така, какво е решението? Правилно се досещате, VBA макрос. Сега ще кодираме.

По -долу е кодът на excel vba за вмъкване на картина от папка в клетка или даден диапазон. Натиснете Alt+F11, поставете модул и копирайте този код.

Не се притеснявайте, обясних го по -долу, за да можете да го промените според вашите нужди.

Вмъкване на картина в клетка на Excel с VBA в клетка или зададен диапазон

Sub TestInsertPictureInRange () InsertPictureInRange "C: \ Име на папката \ PictureFileName.gif", _Range ("B5: D10")

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

'вмъква картина и я преоразмерява, за да пасне на диапазона 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 клетката или диапазона. Играйте около кода. Опитайте се да вмъкнете различни формати, странни диапазони и вижте какво се случва. Ако имате въпроси или сте изправени пред предизвикателство, използвайте раздела за коментари по -долу, за да ме попитате.
Свали файл

Вмъкване на снимки с помощта на VBA в Microsoft Excel 2016

Популярни статии:

50 преки пътища в Excel за повишаване на вашата производителност

Как да използвате функцията VLOOKUP в Excel

Как да използвате функцията COUNTIF в Excel

Как да използвате функцията SUMIF в Excel