Надстройка для вставки картинок (изображений) в Excel

Надстройка PastePictures для MS Excel: общие сведения

Предназначение программы: вставка изображений в таблицу Excel, поиск картинок в папке или в Google, экспорт картинок из таблицы в папку.

Основные функции программы:

  • вставка фото из папки (поиск по имени файла)
  • вставка картинок по ссылкам из таблицы
  • поиск изображений в гугл по данным с листа Excel
  • экспорт изображений с листа в файлы

Особенности программы

  • сжатие изображений перед вставкой (получается файл минимального размера)
  • поиск картинок в подпапках (глубина поиска по подпапкам не ограничена)
  • добавление гиперссылок к вставляемым изображениям
  • 3 варианта поиска файлов в папке (по точному совпадению имени файла и значения ячейки, или по частичному вхожению)
  • 2 режима вставки картинок - подгонка размеров под ячейку, или соблюдение пропорций исходного изображения
  • возможность вставки изображений в примечания к ячейкам
  • поиск недостающих фотографий товара в Google (в т.ч. поиск по заданным сайтам)
  • режим вставки изображений сразу в несколько столбцов
  • экспорт полноразмерных изображений (в каком виде они хранятся внутри файла Excel)

Подробнее — в разделе Справка по программе

Видеоинструкция

На видео рассказывается о работе с программой, и показан процесс её настройки:

Подробные инструкции и описание функционала также можно найти в разделе Справка по программе

Видеоинструкция по дополнительным возможностям

На видео рассказывается о возможностях поиска изображений в Google:

Подробные инструкции и описание функционала также можно найти в разделе Справка по программе

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

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

 

Принцип работы с программой:

  1. Скачиваем файл программы (по ссылке выше), и сохраняем его куда-нибудь себе на диск. (например, на Рабочий Стол)
  2. Запускаем файл надстройки PastePictures.xla(как любой другой файл Excel - двойным щелчком)
  3. Открываем файл с названиями картинок (пример файла вы увидите при тестировании программы)
  4. На панели инструментов программы нажимаем кнопку «Настройки», выставляем нужные параметры
    • На форме настроек выбираем путь к папке, содержащей картинки (изображения)
    • Выставляем необходимые размеры для ячеек с картинками, выбираем первую ячейку на листе с именем файла
    • Указываем номер столбца, в который будут помещены изображения
    • и т.д. и т.п. - настроек там много разных, но разобраться в них совсем не сложно
  5. Нажимаем в меню «Изображения» - «Вставить картинки из папки», и через несколько секунд получаем результат.
  6. Если в исходной таблице - не имена файлов, а ссылки (URL) на картинки в интернете, то используем для запуска пункт меню «Изображения» - «Вставить картинки по ссылкам».

Как скачать и протестировать программу

Комментарии

можно ли реализовать альтернативный, третий вариант:
3) Внести соответствующие изменения в код с моей помощью :-)
Если я правильно понял, то нужно внести изменения в данной части вашего кода:
Sub InsertPhoto(ByVal PhotoPath As String, cell As Range)
dh = 2
On Error Resume Next
Dim ph As Picture: Set ph = cell.Parent.Pictures.Insert(PhotoPath)
ph.Top = cell.Top + dh
ph.ShapeRange.LockAspectRatio = 1
w = ph.Width: h = ph.Height: ph.Height = cell.Height - 2 * dh
ph.Width = w * ph.Height / h
ph.Left = cell.Left + cell.Width / 2 - ph.Width / 2

В Excel 2010 вставка осуществляется по следующему коду:
ActiveSheet.Pictures.Insert( _
"\\Dc1\UsersFiles\ERozhkov\Мои документы\Мои рисунки\416.jpg").Select

Можно ли это как-то соединить? А я уже протестирую...

Здравствуйте, Евгений.

Действительно, в Excel 2010 (который, наверняка, вы и используете) вставка изображений на лист реализована несколько иначе, по сравнению с предыдущими версиями.

Решить проблему можно двумя способами:
1) переписать макрос, чтобы он при запуске из Excel 2010 вставлял в файл именно картинки, а не ссылки на них
2) использовать данную надстройку в Excel 2003-2007 (или более ранних версиях) - подобной проблемы не будет

Excel 2010 у меня пока не установлен - так что внести изменения в код пока не получится (протестировать не смогу).
Вы можете установить на своём компе дополнительно приложение Excel 2007 (без остальных программ пакета Office 2007), и запускать надстройку именно в нём.
Если такой вариант устроит - могу дать ссылку на скачивание установочного файла Excel2007 (отправлю ссылку на почту)

Здравствуйте.

Спасибо заполезную надстройку!

Вот заметил такую проблему. Если вставить картинки в файл через эту надстройку, затем файл открыть на другом ПК, то вместо картинок отображаются крестики, типа Excel их не распознал. Если вернуть файл на тот комп где он создавался, то картинки сразу начинают отображаться. Такое впечатление, что при вставке указывается путь и связь для обновления каждой картинки.

Т.е. пользоваться созданными каталогами на других ПК, отличным от тех, на которых они создавались не представляется возможным? Я правильно понял.

Как можно с этим бороться.

Спасибо, теперь работает!)))

Да, этот момент я не учёл при написании макроса - поскольку формат артикула заказчика не предусматривал наличие символов типа точки.

Устранить проблему несложно - для этого найдите в коде функцию GetPicturePathForCell,

и замените её код этим:

Function GetPicturePathForCell(ByVal txt As String) As String
    For Each file In FileNames
        If Dir(file) & "." Like txt & ".*" Then GetPicturePathForCell = file: Exit Function
    Next
End Function

Теперь в столбце с названиями картинок могут присутствовать точки в имени файла (проверил, картинки вставляются)

Похоже макрос считает все, что после точки расширением и не воспринимает последующие символы.(((

А он точки в именах файлов воспринимает? С точкой в имени файла не вставляет, а если точку заменить например на тире то вставляет.

Спасибо огромное! Вы мне безумно помогли!

Проверил - проблема точно не в макросе:

Для этого предварительно переименовал один из файлов изображений в A1020AP-2AB.jpg

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

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

(скопируйте имя файла в соседнюю ячейку, и сверьте коды символов)

Здравствуйте. У меня например очень странная ситуация.... Фото, имена названия которых имеют вид типа "742194.jpg", нашлись и вставились.
Фото, названия которых имеют другой вид "A1020AP-2AB.jpg" не находит и не вставляет, хотя название в ячейке "В" в точности совпадают с названием файла (ну без .jpg соответственно). Что это может быть? Уже неделю бьюсь, ищу макросы, способы... Обрадовался, что нашел и на тебе(( Помогите пожалуйста, сам я это не осилю... Заранее спасибо.

А с 2010 офисом это работает?
а то нету ничего после Ctrl+Shift+K

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

Спасибо за полезную надстройку.

Спасибо за программу!
А как сделать чтобы картинки вставлялись не в 4-й столбец, а вдругой?

добрый день!

А как быть с 64 разрядными системами?

который раз захожу на сайт и поражаюсь - как это ВСЕ можно освоить???))) Спасибо за сайт очень много полезного!!!

Вот огромное спасибо.
Простая в использовании и реально помогающая программа!

Большое спасибо, все работает, вывел кнопку на панель быстрого доступа ShowForm, 300 изображений за 3 минуты Brilliant!

Показываю путь к картинкам (формат они тоже jpeg) нажимаю кнопку "зеленую", на что пишет "не удалось найти изображений"

Если верно указана папка, и файлы в ней действительно являются изображениями (а не какими-нибудь текстовыми документами с расширением jpeg), то проблема, скорее всего, вызвана следующим:

  • имена файлов-изображений не полностью соответствуют значениям ячеек в столбце B
  • (регистр не учитывается, но имя файла без расширения должно в точности совпадать с содержимым ячейки, чтобы картинка вставилась на лист)

  • названия изображений расположены не в столбце B
  • (макрос обрабатывает все заполненные ячейки в столбце B, начиная с ячейки B1)
    Столбец можно изменить в следующей строке кода:
    Set ra = Range([b1], Range("b" & Rows.Count).End(xlUp))

Вы просто БОГ! всем офисом готовы расцеловать! Спасибо!

Скажите пожалуйста... Показываю путь к картинкам (формат они тоже jpeg) нажимаю кнопку "зеленую", на что пишет "не удалось найти изображений". Подскажите, отчего это может быть?

Нашел переменные отвечающие за высоту и ширину вставляемой картинки (в юзерформе).
Мне кажется что данная программа более технологична, т.к. нет зависимости от текущиего размера ячейки, и картинка рамеры которой указываются в юзерформе подгоняет размеры ячейки в которую вставляется (может я что перепутал по логике макроса,но как-то так).
Хочу выразвить Вам свою благодарность! Программа очень полезная, т.к. колосально экономит время если нужно вставить очень много (от 200 до 20000) картинок, за очень короткое время)!
Единственное что я не понял, так это почему не срабаывает прогресс-бар)

почему стоит ограничение на размер (ширину и высоту ячейки) вставляемых картинок?

Таково было требование заказчика.
Есть версии этой программы и с подгонкой ширины картинок под размеры ячейки (я их не успел пока опубликовать)
Необходимый для этого код можно найти здесь: http://excelvba.ru/code/PastePictures

Классная программа.
Есть только 1 вопрос - почему стоит ограничение на размер (ширину и высоту ячейки) вставляемых картинок?