|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.10.2010, 21:47 | #1 |
Регистрация: 18.09.2010
Сообщений: 4
|
Фото-каталог товаров в Excel
Здравствуйте.
Прошу всех помощи, как закончить код, и дать критические замечания по структуре кода (полагаю, что код содержит много лишнего).Приведенный код – это мой первый опыт в программировании. Он создавался частями из примеров уважаемых людей. Сейчас я дошел до момента, когда формируется только каталог с фотографиями, но не понимаю, как добавить текстовое описание для каждой фотографии. Опишу, что получается при работе кода: 1. В колонке А перечислены артикулы, которые являются фрагментами названий графических файлов (фотографий товаров, например, с расширением *.jpeg, *.tif и другие), расположенные в какой-либо папке на жестком диске. При нажатии на кнопку «Получить путь» формируется массив из артикулов (фрагментов названий файлов) и вызывается диалоговое окно для выбора пользователем пути к папке, где находятся файлы с фотографиями этих артикулов. Далее создается объект File System Object, который получает все названия файлов в выбранной пользователем папке (а также получает все названия файлов из подпапок в выбранной папке). Если артикул содержится в имени файла, то выводится путь к этому файлу в ячейку, смещенную вправо (то есть в ячейку колонки В напротив совпавшего артикула). 2. После выполнения кода из пункта 1 в колонке B для каждого артикула создан путь к файлу. При нажатии на кнопку «Создать каталог» формируется массив «пути к файлам» по колонке B. Далее создается новый документ Excel, в котором задается диапазон (в данном случае [b3:c3]) для вставки первой фотографии и последующих через определенное кол-во строк. В итоге получается каталог фотографий в новом документе Excel, расположенный в порядке, соответствующий порядку расположения артикулов в колонке А на 1 листе исходного документа. Это пока весь функционал программы. Опишу, что в итоге нужно получить (где нужна помощь): 3.При формировании каталога в новом документе Excel нужно добавить текстовое описание для каждой фотографии: Перед вставкой первой фотографии и последующей нужно вставлять, например, для первого артикула в ячейку А2 заголовок столбца «Артикул:» и сам артикул в ячейку B2 для этой фотографии из исходного документа. После вставки первой фотографии и последующей нужно вставлять, например, для первого артикула: в ячейке А5 «Страна происхождения:», а в ячейке B5 «Китай»; в ячейке A6 “Производитель:”, а в ячейке B6 “China Corp”. Очень важно учесть: в исходном документе справа от колонки «полный путь к файлу» может быть от 1 до 10 столбцов, ячейки которых могут, как содержать информацию, так и быть пустыми. При наличии в исходном документе дополнительных столбцов и заполненных ячеек в этих столбцах в новый документ вставляется заголовок столбца и текстовое значение ячейки (из этого столбца), описывающее определенную фотографию. Вот, как-то так |
16.10.2010, 12:41 | #2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
В коде, конечно, много лишнего, но... разве это важно?
Я могу убрать весь лишний код - но это займёт много времени. Поэтому предлагаю вам ещё один пример с ОГРОМНЫМ количеством лишнего кода: http://excelvba.ru/XL_Files/Sample__...__14-37-02.zip (при нажатии на зелёную кнопку запуска формируется таблица с фотографиями - для каждой позиции скачивается с интернета (или вставляется с компа) 2 фотографии, добавляются подписи для этих фотографий, добавляются гиперссылки с фотографий на пункты основной таблицы, и т.д.) Также реализована функция обрезки краёв некоторых типов фотографий (функция CropPicture) PS: А у вас картинки могут располагаться и в подпапках выбранной папки? Если нет - то код можно значительно упростить. =============== добавлено позже ==================== У меня на сайте есть готовая программа для вставки изображений на лист Excel: http://excelvba.ru/programmes/PastePictures Цитата:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 06.10.2012 в 14:48. |
|
16.10.2010, 20:41 | #3 |
Регистрация: 18.09.2010
Сообщений: 4
|
Важно для меня - это решить задачу. А если задача будет решена красиво, то это будет еще и уроком для меня.
Спасибо за пример. Сейчас изучаю его. Пока есть одно затруднение - что значит [RowTemplate] и откуда этот образец строки берется? Например, в функции: Function TheTable() As Range Dim ro As Range: Set ro = shs.[RowTemplate] Debug.Print ro.Row If ro.Row > 14 Then Set TheTable = shs.Range("14:" & (ro.Row - 1)).EntireRow Debug.Print TheTable.Row End Function Картинки могут находиться и в подпапках выбранной папки. Они сгруппированы по папкам - готовые изделия, принадлежности к изделию, запасные части к изделию. |
16.10.2010, 21:12 | #4 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
shs означает ссылку на лист с кодовым именем shs [RowTemplate] - ссылка на именованный диапазон с именем RowTemplate на листе shs Цитата:
Иначе можно было бы искать картинки, не считывая изначально список всех файлов: артикул="5587" ПутьКФайлу = Dir (ПутьКПапке & "*" & артикул & "*.jpg") В вашем случае такой вариант, увы, не подойдёт. Для считывания имён файлов в коллекцию можно использовать эту функцию: http://excelvba.ru/code/FilenamesCollection Я бы сделал вам пример - но... 1) сейчас пока нет времени 2) вы не выложили папку с картинками (не на чем тестировать макрос) 3) вы не показали на примере, как должен выглядеть отчёт с фотографиями (сделайте вручную на примере 2-3 фоток) |
||
17.10.2010, 13:54 | #5 | |||
Регистрация: 18.09.2010
Сообщений: 4
|
Цитата:
Цитата:
В итоге использовал код из этого примера http://forum.ixbt.com/topic.cgi?id=23:38561 Цитата:
|
|||
17.10.2010, 15:45 | #6 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Сделал небольшой пример (правда, забыл учесть некоторые нюансы, но всё же).
Проверяйте: Сделал, как и у вас, 2 макроса: Код:
Код:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 17.10.2010 в 15:47. |
17.10.2010, 15:53 | #7 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Если отчёт нужен в новом файле, замените строку
Код:
Код:
Цитата:
Код:
|
|
19.10.2010, 23:22 | #8 |
Регистрация: 18.09.2010
Сообщений: 4
|
Все работает точно так, как я описал
Решил, что число названий столбцов должно быть переменным и получать их лучше из исходного документа, а вставку в блок после картинки производить через цикл. Код:
Код:
Каким образом можно удалять пустые строки из блока? Последний раз редактировалось Fellow; 19.10.2010 в 23:28. Причина: добавил файл |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Записи в паскале. Экспорт товаров | Dzhem | Помощь студентам | 0 | 19.05.2010 16:36 |
Доставка товаров Dostanu | Dostanu | Компьютерное железо | 0 | 09.04.2010 18:13 |
Скрипт каталога товаров | mikle1980 | Фриланс | 1 | 03.02.2010 19:23 |