Счастливые обладатели лицензий MS Office 365, свежих коробок 2024 и обновленных 2021 наверное уже в курсе, что не так давно, в начале 2023 года, в Excel появилась новая функция ИЗОБРАЖЕНИЕ (IMAGE), с помощью которой теперь можно вставлять картинки по ссылке из интернета прямо в ячейку.
Синтаксис функции ИЗОБРАЖЕНИЕ
=ИЗОБРАЖЕНИЕ(источник; [замещающий_текст]; [размер]; [высота]; [ширина])
Функция ИЗОБРАЖЕНИЕ использует следующие аргументы:
источник Путь в виде URL-адреса с использованием протокола HTTPS к файлу изображения. Обязательно. Поддерживаемые форматы файлов: BMP, JPG/JPEG, GIF, TIFF, PNG, ICO, а также WEBP (WEBP не поддерживается в Интернете и Android).
замещающий текст Замещающий текст, описывающий изображение для специальных возможностей. Необязательный параметр.
размер Указывает размеры изображения. Необязательный параметр. Существует несколько возможных значений:
0 Вписать изображение в ячейку и сохранить пропорции.
1 Заполнить ячейку изображением и игнорировать пропорции.
2 Сохранить исходный размер изображения, который может превосходить границы ячейки.
3 Настроить размер изображения с использованием аргументов высоты и ширины.
высота Настраиваемая высота изображения в пикселях. Необязательный параметр.
ширина Настраиваемая ширина изображения в пикселях. Необязательный параметр.
(если указан только один из аргументов высоты/ширины, пропорции изображения будут сохранены в соответствии с указанным аргументом).
Подробнее в справке Microsoft
Но как быть тем, кто пользуется старым версиями Excel?
Одно из решений — небольшой макрос, который вставит по ссылке из ячейки одно или сразу много изображений на лист Excel. При этом, в отличии от функции ИЗОБРАЖЕНИЕ, рисунки размещаются не внутри ячеек, а на отдельном слое листа Excel, как это обычно бывает с картинками.
Макрос вставки в Excel картинок по ссылкам из интернета или локального диска
В этом примере макрос вставит на лист Excel картинки по ссылкам из интернета или локального диска.
При запуске он спросит вас желаемую высоту картинок в пикс. для всех предварительно выделенных ячеек со ссылками. Т.е. сначала выделяем мышью одну или несколько ячеек с URL или локальными адресами картинок (например, D:\Downloads\Пример.jpg), затем запускаем макрос и отвечаем на вопрос, сколько рисовать высоту картинок в пикс.
Sub InPict()
Dim pic As Shape
Dim cell As Range, imageCell As Range
Dim targetHeightPx As Integer
Dim pointsPerPixel As Double
' Вызываем окно диалога и устанавливаем желаемую высоту картинок в пикселях
targetHeightPx = InputBox("Ведите высоту в пикселях", "Размеры картинки", 400)
' Коэффициент перевода
pointsPerPixel = 72 / 96 ' 0.75 пунктов на пиксель
' цикл по выделенным непустым ячейкам
For Each cell In Selection
If Not IsEmpty(cell) Then
Set imageCell = cell.Offset(0, 1) ' адрес ячейки для вставки картинки, т.е. верхний левый угол картинки - в яч. справа в той же строке
'вставляем картинку
Set pic = ActiveSheet.Shapes.AddPicture(cell.Value, False, True, imageCell.Left, imageCell.Top, -1, -1)
pic.LockAspectRatio = True ' сохраняем пропорции картинки
pic.Height = targetHeightPx * pointsPerPixel ' присваиваем высоту картинки
End If
Next cell
End Sub
В коде можно:
- изменить относительный адрес вывода картинки (строка 16), здесь Set imageCell = cell.Offset(0, 1) — это сдвиг ячейки с картинкой на 0 строк и на 1 столбец вправо относительно яч. со ссылкой;
- заменить везде Height на Width, тогда в диалоговом окне будет задаваться не высота, а ширина;
- сначала заменить стр. 22 на pic.Height = imageCell.Height , а затем удалить диалоговое окно — строки с 7 по 11, тогда высота каждой картинки будет равна высоте соответствующей ячейки со ссылкой;
и т.д.
А как добавить макрос?
Если что, напомним как добавить макрос и заставить его работать:
1) В Excel, Word, PP и т.д., нажать Alt + F11, или кнопку Visual Basic на вкладке Разработчик. В меню редактора VBA вставить новый модуль Insert — Module
и вставить в окошко редактора расположенный выше код, далее можно сохранить код, нажав Ctrl + S и закрыть окно VBA (Alt + F4);
2) Нажать Alt + F8, выбрать макрос и нажать кнопку Выполнить.
Полученный файл можно сохранить как обычный xlsx. При этом если вы задали размер всех картинок, например, в 150 пикс., то картинки и сохранятся в таком разрешении и с небольшим весом файла, независимо от размеров исходников.