5 примеров использования новой функции IMAGE в Excel
Уже несколько лет в Google Sheets существует функция IMAGE, позволяющая вставлять в ячейки листа картинки по ссылке из интернета. Что, впрочем, вполне естественно, поскольку Google-таблицы изначально заточены под работу онлайн - им сам бог велел такую возможность использовать.
У Excel же ничего подобного долго не было. И вот, наконец, осенью 2022 года Microsoft начала среди добровольцев-тестировщиков из программы Office Insider обкатку своего аналога - новой функции ИЗОБРАЖЕНИЕ (IMAGE), также позволяющей вставлять по веб-ссылке картинки из интернета прямо в ячейки листа Microsoft Excel. В начале 2023 года эту функцию уже стали потихонечку разливать с обновлениями подписчикам Office 365 и недавно она, наконец, добралась и до меня. А значит я могу вам о ней рассказать на нескольких практических примерах.
Если же последней версии Office у вас пока (или уже) не предвидится, то не расстраивайтесь - в конце этой статьи я покажу как при помощи короткого макроса можно сделать упрощённый аналог этой функции уже сегодня.
Синтаксис функции ИЗОБРАЖЕНИЕ (IMAGE)
Тут всё предельно просто:=ИЗОБРАЖЕНИЕ(источник; [замещающий_текст]; [изменение_размера]; [высота]; [ширина])
Первым и единственным обязательным аргументом новой функции должна быть текстовая ссылка на файл изображения из интернета. Причем это должна быть именно веб, а не локальная ссылка на файл на жестком или сетевом диске. Если доступа в интернет сейчас нет, то вместо картинки будет ошибка #СОЕДИНЕНИЕ! (если нет интернета) или #ЗАБЛОКИР! (если ваши настройки безопасности не дают загрузить картинку). Если вы хотите подстраховаться на такой случай, то вторым аргументом как раз можно ввести замещающий текст, который будет отображен вместо отсутствующей картинки.
Третий аргумент отвечает за размеры и пропорции изображения и может принимать значения:
- 0 - вписать изображение в ячейку с сохранением пропорций
- 1 - заполнить всю площадь ячейки не сохраняя пропорции картинки
- 2 - сохранить исходный размер изображения (тут оно запросто может вылезти за пределы ячейки)
- 3 - задать высоту и ширину изображения принудительно (тогда их надо обязательно прописать в четвертом и пятом аргументе функции)
Большим преимуществом новой функции является то, что картинка будет не просто вставлена на лист, а именно вписана в конкретную ячейку, т.е. будет вместе с ней двигаться, сжиматься и растягиваться. Это принципиально отличается от классической вставки картинок командой Вставка - Рисунки (Insert - Pictures), когда изображение и лист находились, по сути, в разных слоях и вы могли запросто случайно сдвинуть или даже удалить картинку после вставки. Здесь же всё чётко.
Также если щёлкнуть по вставленному функцией изображению правой кнопкой мыши и выбрать команду Показать сведения об изображении (Show image properties), то во всплывающем окне можно будет увидеть картинку в оригинальном разрешении.
Теперь давайте рассмотрим несколько вкусных примеров использования новой функции ИЗОБРАЖЕНИЕ на практике.
Пример 1. Создание штрих-кодов и QR-кодов
Этикетки для маркировки товаров, ценники, бланки, наклейки - всё это требует формирования штрих-кодов различного типа. Теперь для этого можно не использовать специальные программы, а реализовать всё в Excel.
Идём на сайт австрийской компании TEC-IT, где можно легко создать штрих-код любого стандарта с заданным содержимым:
Ссылка, по которой формируется изображение штрих-кода висит на кнопке Download и выглядит так:
_ttps://barcode.tec-it.com/en/Тип_штрихкода?data=Наше_содержимое_кода
Например, для распространенного типа Code-128, который кодирует строку "ABC-abc-1234" ссылка будет выглядеть как:
_ttps://barcode.tec-it.com/en/Code128?data=ABC-abc-1234
Так что просто подклеиваем справа от последнего знака "равно" наши артикулы, заворачиваем всё в функцию ИЗОБРАЖЕНИЕ и получаем автоматизированное создание штрих-кодов для любого количества товаров:
Красота.
Если нужен не линейный, а квадратный QR-код, то можно использовать другой бесплатный сайт - QR Code Generator:
Здесь ссылка для формирования QR-кода выглядит следующим образом:
ttps://api.qrserver.com/v1/create-qr-code/?data=Наши_данные&size=100x100
Опять же, подставляем туда адреса ячеек с исходными данными и получаем возможность массово клепать QR-коды в любом количестве:
Пример 2. Логотипы компаний
Ещё одна любопытная возможность - это автоматизированная загрузка логотипов известных компаний с помощью веб-сервиса https://logo.clearbit.com. Идея та же - подклеиваем адрес сайта нужной нам компании в конец ссылки - и получаем от сервиса изображение логотипа заданной компании, которое выводит на лист наша функция ИЗОБРАЖЕНИЕ:
Можно использовать в дашбордах по анализу рынка, для визуализации инвестиционного портфеля, в прайс-листах и т.д. - у кого на сколько фантазии хватит.
Пример 3. Нестандартные диаграммы
На сайте QuickChart.io можно в режиме онлайн-конструктора создавать разнообразные диаграммы по вашим данным и использовать их затем в ваших проектах. Нюанс в том, что помимо стандартных диаграмм (которые Excel и сам неплохо умеет строить), здесь есть несколько весьма симпатичных нестандартных, например, спидометры и прогресс-бары, диаграммы Санкей для визуализации связей и т.д.
Для получения, например, круговой диаграммы-шкалы прогресса, нам потребуется сформировать вот такую веб-ссылку:
ttps://quickchart.io/chart?c={type:'radialGauge',data:{datasets:[{data:[Значение_параметра],backgroundColor:'green'}]}}
И визуализировать её затем с помощью нашей новой функции ИЗОБРАЖЕНИЕ (IMAGE):
Или можно, например, сформировать и вывести изображение вот такого нарядного спидометра со стрелкой:
Здесь ссылка чуть похитрее, т.к. в неё уже зашиты размеры трёх диапазонов шкалы и их цвета, а также положение стрелки:
ttps://quickchart.io/chart?c={ type: 'gauge', data: { datasets: [ { data: [10, 40, 60], value: Позиция_стрелки, backgroundColor: ['green', 'gold', 'lightcoral'] } ] } }
Названия цветов для заливки сегментов диаграммы можно взять из справочника.
Пример 4. Скриншоты сайтов
Если вы работаете с интернет-ресурсами или в области SEO-SMM, то вам пригодится возможность быстро формировать скриншоты заданных веб-страниц и вставлять их на лист Excel в виде изображений. Это можно сделать с помощью веб-сервиса https://mini.s-shot.ru, добавив к его адресу ссылку на интересующую страницу.
Подставляем её в нашу функцию ИЗОБРАЖЕНИЕ и получаем:
При большом количестве ссылок и скриншотов вся эта история может первый раз ощутимо подтормаживать - не пугайтесь.
Пример 5. Географические карты
Опять же, вставлять на лист интерактивные географические карты Excel уже давно умеет (через Вставка - Карты Bing, например), но можно это сделать и с помощью новой функции ИЗОБРАЖЕНИЕ, если найти веб-сервис, который по заданным координатам или названию населенного пункта будет формировать для нас скриншот карты в нужном месте. Обычно такие сервисы платные и используют API - специальный механизм запросов для общения с ними.
Например, на одном из таких сайтов Geoapify.com ссылка для получения нужного фрагмента карты случае формируется из:
- долготы (longtitude)
- широты (latitude)
- коэффициента масштаба (zoom)
- ключа API - длинного буквенно-цифрового кода, который вы получаете в личном кабинете в качестве вашего личного идентификатора:
Обратите внимание, что в качестве разделителя между целой и дробной частью должна быть использована точка, поэтому дополнительно придётся использовать функцию ПОДСТАВИТЬ (SUBSTITUTE), чтобы её подменить.
Аналог функции IMAGE на VBA
Если приведенные выше примеры вас заинтриговали, но последней версии Excel у вас пока нет, то можно относительно легко склепать на коленке упрощенный аналог этой функции на Visual Basic. Только вставлять картинки он будет не по ссылке из интернета, а по пути к файлу с жесткого диска вашего ПК (что в некоторых случаях может быть даже предпочтительнее - интернет у нас не везде бывает).
Откройте редактор макросов сочетанием клавиш Alt+F11 или кнопкой Visual Basic на вкладке Разработчик (Developer). Вставьте новый пустой модуль командой меню Insert - Module и скопируйте туда текст следующего макроса:
Sub InsertPictures() Dim pic As Shape Dim cell as Range, imageCell as Range 'проходим по выделенным непустым ячейкам 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 = imageCell.Height 'подгоняем по высоте под ячейку End If Next cell End Sub
Теперь останется ввести в ячейки листа пути к файлам картинок, а затем выделить эти ячейки и запустить наш макрос командой Разработчик - Макросы (Developer - Macros) или сочетанием клавиш Alt+F8. Макрос пробежит по всем выделенным ячейкам и вставит в каждую картинку из указанного файла, вписав её в по размерам в каждую ячейку.
Картинки, правда, будут не внутри ячеек, как в случае с функцией IMAGE, а - как обычно - в отдельном слое, так что изменение высоты строк не приведёт к автоматической подгонке размеров изображений.
Если нужно будет подгонять размер картинок не по высоте, а по ширине ячеек, то замените в коде свойство Height на Width.
Ссылки по теме
- Выпадающий список с показом изображений
- Картинка в примечании к ячейке
- Создание печатной подложки в Excel
Спасибо автору.
Но...
365 версия дюже дороговата для использования
Я бы попробовал заранее пакетную обработку исходных фотографий (обрезка, уменьшение разрешения, сжатие и т.д.) и только потом вставку через IMAGE.
Просмотрев видео, сразу родилась идея автоматизации печати этикеток при работе с маркетплейсами. Но у меня что-то пошло не так ((
Хочу напечатать этикетку на отправление WB.
=ИЗОБРАЖЕНИЕ("https://suppliers-api.wildberries.ru/api/v3/orders/stickers?type=png&width=58&height=40&orders=.........&key=........";;2)
ошибку выдает #подключ!
Может кто-то подскажет где ошибка?
Столкнулся я с задачей, когда мне ну очень нужна эта функция, а на текущей работе сейчас стоит коробочный office 2021 prof.
Читаю статью Николая и там звучит Office 365, смотрю справку MS а там (Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel для iPhone Excel для телефонов с Android).
И я даже успел расстроиться, а потом черт меня дернул просто попробовать в своем коробочном офисе ввести эту функцию.
Все прекрасно работает, функция поддерживается в Excel 2021 (сборка 2402) хотя ни где об этом даже у Microsoft не написано и даже когда я пытаюсь вызвать справку в внутри Excel для этой функции он выдает ошибку (Sorry, the page you’re looking for can’t be found.), хотя по другим функция встроенная справка прекрасно работает.
PS: MS какие же жуки все-таки
1. Ваш макрос прекрасно вставляет фото/картинки по ссылкам из интернета, а не только из папок на компьютере.
2. Этот макрос работает в Excel на Windows, а так же на macOs.
Если об этом уже писали, то прошу прощения, посмотрел комментарии не увидел. Я бы про такое в заголовке писал))) кто работает в excel на macOs меня поймет.
p.s: кстати с qr-кодом фокус тоже работает если в ячейке допустим ссылка на данные и API напримр такая
[img]blob:https://www.planetaexcel.ru/6de88cb3-0051-4586-a9ba-db94114a3151[/img]
Microsoft просто жучары в обновлении Excel 2021 (2408) удалили функцию IMAGE, а я уже успел построить на ней отчеты для проверки фоток.
Спасибо Николаю за альтернативные варианты, буду пробовать