Всем привет! Пытаюсь раскачать приборную панель содержательными картинками. Или просто пытаюсь вставить картинку в ячейку Excel VBA. Ну, вы не можете вставлять изображения в ячейки Excel, но вы можете изменить их размер, чтобы они соответствовали ячейке Excel.

Выполнение этого вручную займет много времени и раздражает. Так какое же решение? Вы правильно угадали, макрос VBA. Теперь будем писать код.

Ниже приведен код Excel vba для вставки изображения из папки в ячейку или заданный диапазон. Нажмите Alt + F11, вставьте модуль и скопируйте этот код.

Не волнуйтесь, я объяснил это ниже, чтобы вы могли изменить его в соответствии со своими потребностями.

Вставить изображение в ячейку Excel с VBA в ячейку или заданный диапазон [width = «100%», cols = «100%»,]

Sub TestInsertPictureInRange()InsertPictureInRange

«C:\FolderName\PictureFileName.gif», _Range(«B5:D10»)

End Sub

Sub InsertPictureInRange(PictureFileName As String, TargetCells As

Range)

‘ inserts a picture and resizes it to fit the TargetCells range

Dim p As Object, t As Double, l As Double, w As Double, h As Double

If TypeName(ActiveSheet) <> «Worksheet» Then Exit Sub

If Dir(PictureFileName) = «» Then Exit Sub

‘ import picture

Set p = ActiveSheet.Pictures.Insert(PictureFileName)

‘ determine positions

With TargetCells

t = .Top

l = .Left

w = .Offset(0, .Columns.Count).Left — .Left

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

End With

‘ position picture

With p

Height = h

End With

Set p = Nothing

End Sub

Пояснение:

Часть 1:

Sub TestInsertPictureInRange()InsertPictureInRange

«C:\FolderName\PictureFileName.gif», _Range(«B5:D10»)

End Sub

Вышеупомянутая подпрограмма просто вызывает нашу основную подпрограмму InsertPictureInRange, которая принимает только два аргумента. Сначала адрес файла изображения с его именем и второй диапазон, в который вы хотите вставить изображение в Excel.

Часть 2:

Sub InsertPictureInRange(PictureFileName As String, TargetCells As

Range)’ inserts a picture and resizes it to fit the TargetCells rangeDim

p As Object, t As Double, l As Double, w As Double, h As Double

If TypeName(ActiveSheet) <> «Worksheet» Then Exit Sub

If Dir(PictureFileName) = «» Then Exit Sub

‘ import picture

Set p = ActiveSheet.Pictures.Insert(PictureFileName)

‘ determine positions

With TargetCells

t = .Top

l = .Left

w = .Offset(0, .Columns.Count).Left — .Left

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

End With

‘ position picture

With p

Height = h

End With

Set p = Nothing

End Sub

Это основная подпрограмма, которая вставляет и изменяет размер изображения в соответствии с заданным диапазоном. Давайте вникнем в это.

Dim p As Object, t As Double, l As Double, w As Double, h As Double

Эта строка — всего лишь объявление переменной, которое нам понадобится. Примечание p Как объектная переменная. Эта переменная будет содержать нашу картинку.

If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub

Он проверяет, является ли Activesheet рабочим листом или нет. Если этого не произойдет, код немедленно выйдет, и ничего не произойдет.

If Dir(PictureFileName) = "" Then Exit Sub

Убедитесь, что вы указали адрес изображения для вставки фотографии в ячейку Excel. Если вы его не предоставили, он немедленно выйдет и ничего не произойдет.

Set p = ActiveSheet.Pictures.Insert(PictureFileName)

Теперь это самая важная линия. В этой строке мы используем функцию Insert Activesheet. Объект Pictures и поместите его в объект p, который мы объявили ранее. Теперь с помощью p мы можем легко настроить ширину и длину изображения.

With TargetCells

t = .Top

l = .Left

w = .Offset(0, .Columns.Count).Left - .Left

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

End With

Этот сегмент просто получает длину, ширину, верх и левый угол из заданного диапазона.

With p

.Top = t

.Left = l

.Width = w

Height = h

End With

Эта часть настраивает изображение в заданный диапазон. И дело сделано. Наконец, мы освободили его, установив на ничего.

Set p = Nothing

Эта строка освобождает память.

Этот код будет работать в Excel 2016, Excel 2013, Excel 2010 и Excel 2007.

Здесь я хотел вставить изображение в диапазоне A1: C10. Для этого я изменил свой код ниже [width = «100%», cols = «100%»,]

Sub TestInsertPictureInRange()InsertPictureInRange «*C:\Users\Manish

Singh\Downloads\biker.jpg», _Range(«A1:C10*»)

End Sub

И вот что у меня получилось. Именно то, что я хотел.

pasted image 0 (1)

Так что да. Используйте этот код, чтобы вставить изображение в ячейку или диапазон Excel. Поиграйте с кодом. Попробуйте вставить разные форматы, странные диапазоны и посмотрите, что получится. Если у вас есть какие-либо вопросы или вы столкнулись с какой-либо проблемой, задайте их мне в разделе комментариев ниже.

Скачать файл

`link: /wp-content-uploads-2013-07-Insert-Pictures-Using-VBA-In-Microsoft-Excel-2016.xls [__ Вставить изображения с помощью VBA в Microsoft Excel 2016]

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

link: / формулы-и-функции-введение-функции-vlookup [Как использовать функцию ВПР в Excel]

link: / tips-countif-in-microsoft-excel [Как использовать функцию СЧЁТЕСЛИ в Excel]

link: / excel-formula-and-function-excel-sumif-function [Как использовать функцию СУММЕСЛИ в Excel]