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-кодов

Здесь ссылка для формирования QR-кода выглядит следующим образом:

ttps://api.qrserver.com/v1/create-qr-code/?data=Наши_данные&size=100x100

Опять же, подставляем туда адреса ячеек с исходными данными и получаем возможность массово клепать QR-коды в любом количестве:

QR-код в Excel с функцией ИЗОБРАЖЕНИЕ

Пример 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 - длинного буквенно-цифрового кода, который вы получаете в личном кабинете в качестве вашего личного идентификатора:

Изображение карты по 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.

Ссылки по теме



03.03.2023 17:29:21
Как всегда. Все просто и весело. И ОЧЕНЬ ПОЛЕЗНО!!!
Спасибо автору.
Но...
365 версия дюже дороговата для использования  
15.03.2023 16:49:00
Николай, спасибо за статью! А как уменьшить размер фото загруженных с помощью функции IMAGE (речь про кол-во мегабайт)? Стандартный функционал "сжать рисунки тут не работает", если задать размер рисунка внутри функции IMAGE - тоже на кол-во мегабайт не влияет (или я что-то не так делаю). А размер файла при большом кол-ве фото может быть больше 100 Мб... Подскажите как решить вопрос.
25.04.2023 16:19:23
Интересует тот же вопрос. Загнали в эксель картинки из каталога продукции, теперь файл весит под 3 Гб, хотя картинки на деле - не больше 5-10 мм.
27.04.2023 10:06:08
Встроенных способов решения этой проблемы для функции IMAGE пока нет, насколько я знаю.
Я бы попробовал заранее пакетную обработку исходных фотографий (обрезка, уменьшение разрешения, сжатие и т.д.) и только потом вставку через IMAGE.
11.05.2023 20:29:57
Добрый день, подскажите, пожалуйста, как можно из ссылок на фото, преобразовать в изображения, сохранить на компьютер с нужным названием. Пример на скрине. Название нужно давать в соответствие с артикулом, через _1,_2, и т.д
23.10.2023 11:09:03
Добрый день! Супер! Николай, спасибо за статью.
Просмотрев видео, сразу родилась идея автоматизации печати этикеток при работе с маркетплейсами. Но у меня что-то пошло не так ((
Хочу напечатать этикетку на отправление WB.
=ИЗОБРАЖЕНИЕ("https://suppliers-api.wildberries.ru/api/v3/orders/stickers?type=png&width=58&height=40&orders=.........&key=........";;2)
ошибку выдает #подключ!
Может кто-то подскажет где ошибка?
11.04.2024 11:09:35
Всем привет!

Столкнулся я с задачей, когда мне ну очень нужна эта функция, а на текущей работе сейчас стоит коробочный office 2021 prof.
Читаю статью Николая и там звучит Office 365, смотрю справку MS а там (Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel для iPhone Excel для телефонов с Android).

И я даже успел расстроиться, а потом черт меня дернул просто попробовать в своем коробочном офисе ввести эту функцию.
:idea:
Все прекрасно работает, функция поддерживается в Excel 2021 (сборка 2402) хотя ни где об этом даже у Microsoft не написано и даже когда я пытаюсь вызвать справку в внутри Excel для этой функции он выдает ошибку (Sorry, the page you’re looking for can’t be found.), хотя по другим функция встроенная справка прекрасно работает.


PS: MS какие же жуки все-таки
23.04.2024 04:37:25
Макрос, который Вы Николай разместили (за что Вам огромное спасибо) требует уточнения.
1. Ваш макрос прекрасно вставляет фото/картинки по ссылкам из интернета, а не только из папок на компьютере.
2. Этот макрос работает в Excel на Windows, а так же на macOs.


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

Если об этом уже писали, то прошу прощения, посмотрел комментарии не увидел. Я бы про такое в заголовке писал))) кто работает в excel на macOs меня поймет.

p.s: кстати с qr-кодом фокус тоже работает если в ячейке допустим ссылка на данные и API напримр такая
https://api.qrserver.com/v1/create-qr-code/?data="https://planetaexcel.ru"&size=100x100 то макрос выдает qr-код по которому я попадаю на этот сайт
[img]blob:https://www.planetaexcel.ru/6de88cb3-0051-4586-a9ba-db94114a3151[/img]
Наверх