📌 Как добавить картинки в Excel: автоматизируем процесс заполнения таблицы изображениями. 3 практических примера решения

783 прочитали

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

Если количество изображений велико, вручную добавлять их в таблицу может быть крайне утомительно и затратно по времени.

Но у нас есть решение!

Сегодня рассмотрим 3 (три) способа позволяющих автоматизировать процесс заполнения таблицы изображениями.

А какой из способов выбрать - решать Вам 😉.

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

📢 Файл с исходным кодом размещен в конце статьи 🔽

В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-3

▶️ Исходные данные

В качестве примера рассмотрим ряд изображений расположенных в отдельной папке:

В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-4

🎯 Задача: поместить изображения из данной папки в таблицу:

В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-5

🔔 Обратите внимание! Мы предполагаем, что помимо изображений возможно потребуется ведение каких либо расчетов, а потому создаем именно таблицу:

▶️ Шаг 1. Задаем именованные диапазоны

Для удобства взаимодействия укажем соответствующие именованные диапазоны для каждого из столбцов:

В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-6

▶️ Шаг 2. Создаем список всех изображений

Чтобы массово добавить названия изображений из указанной папки в столбец Excel применим макрос:

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

⚙️ Как это работает:

  • Указываем путь к папке, в которой находятся изображения. В данном примере этот путь указан в качестве глобальной константы, что позволит использовать "FolderPath" в любом месте кода в книге. Кроме того, если потребуется изменить путь к папке, вы сможете сделать это один раз, и это изменение отразится во всем коде, использующем эту переменную.
  • Выбираем лист, на котором необходимо добавить названия изображений. Вы можете указать нужный лист, заменив "ActiveSheet" на имя вашего листа.
  • Столбец A начиная со второй строки очищаем от предыдущих данных (если они есть), чтобы избежать некорректных записей.
  • Перебираем файлы в указанной папке. Для каждого файла проверяется его расширение, и если оно соответствует форматам изображений (JPG, JPEG, PNG, GIF), то название файла добавляется в столбец A:
В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-8
  • После добавления всех названий изображений, проверяем последнюю заполненную строку в столбце A. Если она пустая (например, ранее добавленное изображение было удалено), строка удаляется, чтобы избежать лишних пустых строк.
  • Далее, устанавливаем фиксированную высоту ячеек в столбце A (в нашем примере =50), что обеспечит удобное отображение названий изображений.

▶️ Шаг 3. Добавляем изображения

Следующим этапом в соответствии указанным наименованиям добавим изображения:

Данный макрос добавляет изображения из указанной папки в лист Excel и располагает их в заданной области
Данный макрос добавляет изображения из указанной папки в лист Excel и располагает их в заданной области

⚙️ Как это работает:

  • Определяем область destRange, в которой будут размещаться изображения. Вы можете изменить эту область, указав другой диапазон вместо "Рисунок".
  • Область с изображениями на листе очищается командой ws.Pictures.Delete, чтобы удалить предыдущие изображения (если они были).
  • Далее, перебираем ячейки в столбце "Наименование", где предполагается, что находятся имена файлов изображений. Для каждой ячейки собирается полный путь к файлу из указанной папки.
  • Если файл существует в указанной папке (проверяется с помощью Dir(imgPath) <> ""), то изображение вставляется на лист.
  • Затем устанавливается позиция, размер и центрирование в соответствии с областью destRange.
Представленный макрос также будет полезен полезен, если у вас уже есть список файлов изображений, и требуется массово добавить только изображения в заданный диапазон.

▶️ Шаг 4. Оптимизируем код

Для полноценной работы объединим два макроса в один:

В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-10

🔔 Обратите внимание! В целях оптимизации так же добавлена обработка события (Application.EnableEvents) и управление обновлением экрана (Application.ScreenUpdating):

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

Также мы добавили обработку ошибки. На случай если указанный путь не будет найден:

В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-11

▶️ Дополнения

Чтобы сделать код более универсальным можно вместо назначенной глобальной константы использовать один из следующих подходов:

🔘 Способ 1: Используем глобальную переменную и InputBox:

В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-12

В этом случае посредством InputBox будет запрошен путь к папке:

В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-13
  • Если поле ввода будет пустое, или пользователь закроет InputBox, то прекращаем выполнение макроса.
  • Если путь указан не верно выводим соответствующее сообщение:
В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-14

🔘 Способ 2: Используем глобальную переменную и диалоговое окно выбора папки.

Данный способ аналогичен выбору папки с помощью диалогового окна "Обзор" (как в стандартном диалоге выбора папки):

В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-15

Вот пример, как это можно сделать:

В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-16

⚙️ Как это работает:

  • Application.FileDialog(msoFileDialogFolderPicker) создает диалоговое окно выбора папки;
  • Пользователь выбирает папку;
  • Выбранный путь к папке сохраняется в глобальной переменной FolderPath, которая в дальнейшем используется в макросе для добавления изображений и их наименований.
  • Если выбор был отменен будет показано соответствующее сообщение:
В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-17

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

▶️ Шаг 5. Тестируем результат

Чтобы использовать макрос, вы можете назначить его на кнопку или горячую клавишу для удобного вызова:

Пример: Как массово добавить изображения из папки в таблицу Excel
Пример: Как массово добавить изображения из папки в таблицу Excel

В результате названия изображений будут помещены в столбец A, а сами изображения в соответствующие ячейки столбца В, что и требовалось! 😉

В ряде задач, связанных с созданием информативных отчетов, баз данных, каталогов и т.п., часто требуется взаимодействие с изображениями.-19
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас

📍 Рекомендуемые статьи 🔽

СКАЧАТЬ ПРИМЕР