Как вставить фотографии с помощью Excel VBA
Всем привет! Пытаюсь раскачать приборную панель содержательными картинками. Или просто пытаюсь вставить картинку в ячейку 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 |
И вот что у меня получилось. Именно то, что я хотел.
Так что да. Используйте этот код, чтобы вставить изображение в ячейку или диапазон 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]