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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

Комментарии

Олег, чтобы работало и в случае с объединёнными ячейками, надо править код надстройки.
(мне пока некогда этим заниматься)
Сейчас вставка идёт именно в ячейку заданного столбца - не проверяется, является ли ячейка объединённой.

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

У меня встречный вопрос - а зачем вы вообще объединяете ячейки?
Это ведь только усложняет работу с данными...

Здравствуйте. Отличная программа. Я в экселе не селен, 1с7 получше знаю. Фотки себе в каталог подключил, а вот внешний каталог сделать не как не удавалось. 1с в эксел выводит но без картинок. Ваша функция отлично работает, но я не понял как сделать вывод в объединенные ячейки? Я их объединяю, а рисунок маленький. Не расползается на все ячейки, а только в одной. Подскажите.
С уважением Олег.

Как-то не нужно было вроде.
А вот понадобилось, вспомнил, что видел у Вас на сайте вставку картинок.
Скачал, попробовал - просто Супер!
Спасибо!

Я уже пытался добавить кнопку, но у меня новый офис, к которому не могу привыкнуть и понять. Форму в списке не вижу.
Сломать пароль я смогу. Но не для этого ведь Вы его ставили? ;)
Ну раз разрешаете - придется воспользоваться советом =)

Спасибо Вам!

Скажите пожалуйста, а кроме как комбинацией клавиш никак нельзя вызывать форму? Кнопку ей, к примеру, назначить.

<текст комментария удалён 6 октября 2012 года, в связи с обновлением надстройки>

Теперь запуск программы осуществляется из меню Excel - не надо ничего колдовать с горячими клавишами.

 

Добрый день!
Скажите пожалуйста, а кроме как комбинацией клавиш никак нельзя вызывать форму? Кнопку ей, к примеру, назначить.
Что-то никак не разберусь как это делается.
И еще вопрос - можно ли сделать так, чтобы не проводилось никакой проверки имени в ячейке с именем картинки, а просто вставлялись выбранные файлы?
Вы выше писали "измените такой-то участок кода", но как его можно изменить, проект закрыт паролем и ничего в нем изменить нельзя.

Спасибо!

Спасибо, Ozerman.
В следующей версии исправлю.

При неверном значении в поле, из которого берется название фотографии (т.е. #Н/Д), рисуется как ни в чем не бывало фотография из предыдущей строки :)

Огромное спасибо. Я лишь видел пример,как єто работает.

Да знаю я этот пример: Выбор фото из выпадающего списка

Там же написано, как оно реализовано.

Если хорошо постараетесь - всё получится, сложного ничего нет.

Сами не справитесь - обращайтесь, могу помочь (не бесплатно)

Мне необходимо что-бы одна картинка товара из 60-ти появлялась в одном и том-же месте на другом листе, в зависимости от названия(это бланк заказа). Где то в интернете скачал пример очень похожий на эту программу, но как оно реализовано, не понимаю. Если найду, дам ссылочку.

Тут функции и формулы вряд ли помогут.
Что мешает просто скопировать столбец с картинками, и вставить на другой лист?

Подскажите пожалуйста, я в Excel не очень разбираюсь, а макросы вобще что-то заоблочное. До восьмого пункта " работа с макросом", я дошел, картинки загрузились, но какую функцию (формулу) использовать, чтобы картинки появлялись в нужной мне ячейке на другом листе. Спасибо.

Спасибо, за изменения.
Программа за последнее время действительно стала более интересной, наверное по этому вы и код запаролили :-) ну меня это не волнует, просто заметил эту разницу. Я только рад что сам ей пользуюсь.

Из всего описанного у меня осталась проблема вставки с галкой "сохранить пропорции рисунка"., не знаю как вставлять в этот форум картинки, так бы показал.

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

Отлично работает функция вставки картинов в примечания, там все идет в оригинальных пропорциях.

Ваши пожелания выполнены )

1. Действительно, алгоритм подсчёта файлов был крайне неоптимален. Если на маленькой папке это почти не было заметно, то на больших объёмах папок всё дико тормозило.

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

 

2. Реализовал различные настройки для вставки картинок в ячейки, и в примечания.

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

 

3. Галочка "сохранить пропорции рисунка" работает нормально (по крайней мере, у меня)

Посмотрите пример вставки картинок без галочки (4-й столбец) и с галочкой (5 и 6 столбцы):

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

 

PS: Прикрепил обновлённые файлы надстройки к статье.

Присоединяюсь с благодарностью, за проделанную работу!
Про вас и ваш сайт с удовольствием рассказываю знакомым!

По файлу есть такие вот предложения:
1. Функция "вывод количества файлов в выбранной папке"
она приводит к тому, что теперь окно программы появляется со значительной задержкой, порядка 50сек, при размере папки с картинками в 1.5 гектара. Например, я открыл файл для вставки картинок, потом закрыл, котом решил удалить картинки, изменил размер, поработал с картинками и решил вставить новые, снова открыл программу и каждый раз происходит пересчет и обновления кол-ва файлов. Ни какой ключевой информации эта функция не несет, ну есть у меня 13тыс. картинок и что из этого? За то время теряется каждый раз и создается впечатление, что программа работает медленно, хотя я знаю, что это не так! Если есть возможность или оптимизировать или убрать.
2. Функция "возможность вставки изображений в комментарии к ячейкам" мне очень понравилась! Только она вставляет картинки оригинальных размеров, а, как правило, они идут в хорошем качестве, что приводит к тому, что при наведении на примечание, появляющаяся картинка не видна на весь экран, только при сильном масштабировании. Если возможно, то пусть подхватывает настройки из полей Ширины и Высоты, ну или имеет отдельные настройки, что более интересно, т.к. можно увидеть более качественную картинку, но не на несколько экранов :-)
3. Что-то не понял, как работает галочка "Сохранять пропорции рисунка", при любом ее состоянии картинки вставляются под размер ячейки, без сохранения пропорций, получается, что все вытянутые.

Если считаете мои комментарии существенными и способными улучшить написанную вами программу, то буду рад, если вы их реализуете.

Заранее спасибо!

Уважаемый Автор, большое спасибо за оперативный ответ на мою просьбу.

Обновление превзошло все мои ожидания.
Своей программой вы мне очень помоглb - вручную больше ничего делать не надо )))

21.08.2011 надстройка обновлена - добавлены новые функции, устранены недостатки, учтены ваши пожелания и замечания.

Среди новых возможностей надстройки вставки изображений на лист Excel:

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

 

Кроме того, устранены следующие проблемы:

  • в Excel 2010 вставленные картинки не сохранялись вместе с файлом (полностью переработана функция вставки картинок)
  • надстройка совместима с 64-битной верией Office (убрал ненужную API-функцию, которая работала только в 32-битной версии)
  • нормально обрабатываются картинки, содержащие точки в имени файла (изменил функцию подбора подходящего файла)

Очень полезный макрос.
Давно его искал.
Огромное спасибо Автору.

Есть ли возможность чтоб имена файлов-изображений не полностью соответствовали значениям ячеек в столбце B
Например значение ячейки 742194 а название файла изображения 742194-1.jpg или 742194fa.jpg

Заранее благодарен за ответ.

на работе у всех стоят офисы 2010, а 2007 правила не разрешают ставить :-(
эх, ладно буду по старинке, ручками...

Но за программу все равно спасибо!

Код в моей надстройке ничем не отличается от предложенного вами.
Это та же самая функция Pictures.Insert для листа Excel, которую разработчики Excel2010 зачем-то изменили (сделали вставку ссылок вместо изображений)

Тут надо использовать другой способ (какой - забыл, где-то попадалось на форумах)

можно ли реализовать альтернативный, третий вариант:
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

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

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

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

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
                __  __   _____   _  __  ____  
_ __ _ __ | \/ | |___ | | |/ / |___ \
| '__| | '__| | |\/| | / / | ' / __) |
| | | | | | | | / / | . \ / __/
|_| |_| |_| |_| /_/ |_|\_\ |_____|
Введите код, изображенный в стиле ASCII-арт.