Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
roma_9
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 11
1

Форма выбора результата для парсера

10.06.2013, 15:01. Просмотров 914. Ответов 11
Метки нет (Все метки)

Добрый день, господа.

Нужна помощь.

Суть проблемы:
Результатом работы парсера картинок является массив ссылок на все найденные по запросу картинки. Несколько ссылок нужно, чтобы потом выбрать самую подходящую.

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

Как такое реализовать? Буду рад любой помощи.

Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 15:01
Ответы с готовыми решениями:

Форма для ввода(выбора) времени
Делаю форму для ввода даты возникли проблеммы, есть ли примеры данного макроса?

Форма для выбора файла на диске из которого будут ВПР-иться данные
Здравствуйте! Прошу помощи, при написании макроса уперся в проблему на...

функция для выбора по условию 2
Помогите еще раз с помощью формул переместить нужные мне цифры из одной таблицы...

Макрос для выбора цены и количества
Есть такой шаблон.в нём необходимо сравниваем товар по артикулу с цветом.Если...

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

11
Hugo121
6292 / 2391 / 406
Регистрация: 19.10.2012
Сообщений: 7,080
10.06.2013, 15:49 2
Что именно не получается?
Как перебрать файлы (пока непонятно где...)?
Как определить это "непонятно где"?
Как получить коллекцию/массив с именами файлов?
Как менять управляющим элементом картинки, отображаемые на форме?
Как обратиться к ячейке?
Как по клику записать путь к файлу как ссылку в ячейку?

Вообще задача в целом понятна - но в деталях совершенно не объяснили. Поэтому делать конечно можно - но толку от работы может не быть совсем...

Добавлено через 8 минут
Т.е. я так подозреваю, что где-то есть список чего-то, к чему нужно прилинковать какие-то картинки.
И есть желание делать это через форму.
В общем можно конечно...
Но к уже сказанному выше нужно (как я думаю) предусмотреть:
1. переход по тому, к чему линкуем изображения
2. отображение того, к чему линкуем изображения на форме
3. желательна фильтрация изображений в зависимости от выбранного "того, к чему линкуем изображения"
(чтоб не перебирать все 10000 изображений на каждом "того...."). Если конечно есть такая возможность.
4. вероятно есть смысл уже выбранные изображения выкидывать из общего списка. А может и нет...

Добавлено через 9 минут
5. Возможно есть смысл отобранные изображения копировать в другой каталог и делать ссылку на этот каталог (чтоб с исходными файлами позже можно было поступать как угодно. Со всеми.)
0
roma_9
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 11
10.06.2013, 16:00  [ТС] 3
Цитата Сообщение от Hugo121 Посмотреть сообщение
Что именно не получается?
Как перебрать файлы (пока непонятно где...)?
Как определить это "непонятно где"?
Как получить коллекцию/массив с именами файлов?
Как менять управляющим элементом картинки, отображаемые на форме?
Как обратиться к ячейке?
Как по клику записать путь к файлу как ссылку в ячейку?

Вообще задача в целом понятна - но в деталях совершенно не объяснили. Поэтому делать конечно можно - но толку от работы может не быть совсем...
Попробую чётче:
Есть список имен (названий), к каждому нужно привязать одну ссылку на наиболее подходящую картинку.
На нужном сайте макрос делает запрос (по названию), анализирует веб-страницу с результатами и вырезает из нее ссылки на картинки в массив images (http://blabla.ru/img1.jpg, http://blabla.ru/img2.jpg, ...)

далее то, что нужно реализовать:
вываливается форма, куда подгружаются найденные картинками (по ссылкам). В идеале в виде превьюшек определенного размера. Я кликаю на нужной и ссылка на эту картинку (http://..) записывается в нужную ячейку

Скрипт переходит к следующей позиции. И т.д.

Добавлено через 9 минут
Цитата Сообщение от Hugo121 Посмотреть сообщение
Что именно не получается?
Добавлено через 8 минут
Т.е. я так подозреваю, что где-то есть список чего-то, к чему нужно прилинковать какие-то картинки.
И есть желание делать это через форму.
Цитата Сообщение от Hugo121 Посмотреть сообщение
1. переход по тому, к чему линкуем изображения
Да. Но зациклить я могу.

Цитата Сообщение от Hugo121 Посмотреть сообщение
2. отображение того, к чему линкуем изображения на форме
Содержимое ячейки, к которой ищется картинка да, в идеале должно отображаться в форме как название

Цитата Сообщение от Hugo121 Посмотреть сообщение
3. желательна фильтрация изображений в зависимости от выбранного "того, к чему линкуем изображения"
(чтоб не перебирать все 10000 изображений на каждом "того...."). Если конечно есть такая возможность.
4. вероятно есть смысл уже выбранные изображения выкидывать из общего списка. А может и нет...
Не совсем понял, но думаю это не нужно

Цитата Сообщение от Hugo121 Посмотреть сообщение
Добавлено через 9 минут
5. Возможно есть смысл отобранные изображения копировать в другой каталог и делать ссылку на этот каталог (чтоб с исходными файлами позже можно было поступать как угодно. Со всеми.)
Нет, сами файлы мне не нужны. В итоге нужны ссылки на картинки. А уже полученную таблицу вида:

[Название1] [URL_Картинка1]
[Название2] [URL_Картинка2]

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


Спасибо!
0
Hugo121
6292 / 2391 / 406
Регистрация: 19.10.2012
Сообщений: 7,080
10.06.2013, 16:58 4
Кажется не получается прямо из http://www.cyberforum.ru/images/cyberforum_logo.jpg затянуть на форму, нужно сперва сохранить её на диск.
Ну так в общем и быстрее будет.
Сперва скачиваете все файлы в temp, имена можно давать например по порядку ссылок. Это займёт время - зато затем форма будет работать быстро.
Потом при выборе на форме по имени файла берёте исходную ссылку.

Добавлено через 11 минут
Если что - я не подписываюсь делать.
Так, немного тему обсуждаю...
Делать такую работу - нет интереса, да и времени
0
roma_9
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 11
10.06.2013, 17:05  [ТС] 5
Цитата Сообщение от Hugo121 Посмотреть сообщение
Кажется не получается прямо из http://www.cyberforum.ru/images/cyberforum_logo.jpg затянуть на форму, нужно сперва сохранить её на диск.
Ну так в общем и быстрее будет.
Сперва скачиваете все файлы в temp, имена можно давать например по порядку ссылок. Это займёт время - зато затем форма будет работать быстро.
Потом при выборе на форме по имени файла берёте исходную ссылку.

Добавлено через 11 минут
Если что - я не подписываюсь делать.
Так, немного тему обсуждаю...
Делать такую работу - нет интереса, да и времени
Можно и так, сохраняя файлы в temp
вот нашел: Загрузка картинки из Интернета

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
InetFile = "http://www.cyberforum.ru/customavatars/avatar226808_1.gif"
localFile = Environ("temp") & "\" & Mid(InetFile, InStrRev(InetFile, "/") + 1)
 
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
oXMLHTTP.Open "GET", InetFile, 0
oXMLHTTP.Send
 
Set oADOStream = CreateObject("ADODB.Stream")
oADOStream.Mode = 3
oADOStream.Type = 1
oADOStream.Open
oADOStream.Write oXMLHTTP.responseBody
 
oADOStream.SaveToFile localFile, 2
 
Set oXMLHTTP = Nothing
Set oADOStream = Nothing
 
Picture1.Picture = LoadPicture(localFile)
теперь вопрос как картинки выводить на форме
0
Hugo121
6292 / 2391 / 406
Регистрация: 19.10.2012
Сообщений: 7,080
10.06.2013, 17:14 6
Это легко:
Visual Basic
1
2
3
4
5
Private Sub UserForm_Initialize()
       With Me.Image1
        .Picture = LoadPicture("D:\My Pictures\cyberforum_logo.jpg")  'загружаем файл из временной папки на форму
    End With
End Sub
Добавлено через 2 минуты
Я пример загрузки нашёл другой, используя API URLDownloadToFile - но не суть, главное скачать.
0
roma_9
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 11
10.06.2013, 17:40  [ТС] 7
Цитата Сообщение от Hugo121 Посмотреть сообщение
Это легко:
Visual Basic
1
2
3
4
5
Private Sub UserForm_Initialize()
       With Me.Image1
        .Picture = LoadPicture("D:\My Pictures\cyberforum_logo.jpg")  'загружаем файл из временной папки на форму
    End With
End Sub
Добавлено через 2 минуты
Я пример загрузки нашёл другой, используя API URLDownloadToFile - но не суть, главное скачать.
Да, URLDownloadToFile работает...

Значит что получается:
1) нужно в ссылке выделять название картинки (PictureName = "cyberforum_logo.jpg")
2) загрузкой создавать в локальной Temp-папке файл с таким названием
3) На форму выводить все загруженные файлы.
4) Выбирать кликом нужную картинку и возвращать ее исходный url

Собственно по последним двум пунктам я затрудняюсь. Сможете помочь?
0
Hugo121
6292 / 2391 / 406
Регистрация: 19.10.2012
Сообщений: 7,080
10.06.2013, 18:24 8
Я бы название не выделял - они вполне могут дублироваться.
У Вас ведь есть список путей www - вот и давайте названия по порядковым номерам списка, желательно в формате "0000000" ну или сколько там может быть файлов.
Созлаёте публичный массив (или коллекцию) этих имён файлов (это всё можно делать сразу параллельно).
Далее грузите на форму по клику
Me.Image1.Picture = LoadPicture("D:\0000001.jpg")
Путь берёте из массива. Запоминаете в другой публичной переменной индекс этого файла (ну или можно тут же на форме писать в лейбл, можно в невидимый. Хотя видеть номер тоже будет не лишним.).
По кнопке вперёд/назад всё это меняете.
Если выбрали - по индексу уже берём путь из первичного списка.
Ну в общем всё, осталось реализовать/собрать.

Добавлено через 13 минут
А, ну да - нужен ведь ещё массив названий того, к чему крепим картинки.
Ну это аналогично списку картинок - тоже массив, индекс, кнопки вперёд/назад, только вывод в label.
Хотя можно брать эти списки прямо с листа, без массивов - на скорость не повлияет.
0
roma_9
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 11
10.06.2013, 20:21  [ТС] 9
Цитата Сообщение от Hugo121 Посмотреть сообщение
Я бы название не выделял - они вполне могут дублироваться.
У Вас ведь есть список путей www - вот и давайте названия по порядковым номерам списка, желательно в формате "0000000" ну или сколько там может быть файлов.
Созлаёте публичный массив (или коллекцию) этих имён файлов (это всё можно делать сразу параллельно).
Далее грузите на форму по клику
Me.Image1.Picture = LoadPicture("D:\0000001.jpg")
Путь берёте из массива. Запоминаете в другой публичной переменной индекс этого файла (ну или можно тут же на форме писать в лейбл, можно в невидимый. Хотя видеть номер тоже будет не лишним.).
По кнопке вперёд/назад всё это меняете.
Если выбрали - по индексу уже берём путь из первичного списка.
Ну в общем всё, осталось реализовать/собрать.

Добавлено через 13 минут
А, ну да - нужен ведь ещё массив названий того, к чему крепим картинки.
Ну это аналогично списку картинок - тоже массив, индекс, кнопки вперёд/назад, только вывод в label.
Хотя можно брать эти списки прямо с листа, без массивов - на скорость не повлияет.
Спасибо большое за советы, буду делать, результатами поделюсь

Но я никогда не работал с формами, подскажите, как это будет выглядеть в коде: перелистывание картинок + выбор нужной
или может где почитать можно понятным языком
0
Hugo121
6292 / 2391 / 406
Регистрация: 19.10.2012
Сообщений: 7,080
10.06.2013, 20:52 10
Ну где-то например так.
P.S. Выбор нужной не делал - лень.
Но её index в это время в переменной ind, сам путь - в массиве arr по этому индексу.
0
Вложения
Тип файла: rar test.rar (30.4 Кб, 10 просмотров)
roma_9
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 11
11.06.2013, 17:20  [ТС] 11
Цитата Сообщение от Hugo121 Посмотреть сообщение
Ну где-то например так.
P.S. Выбор нужной не делал - лень.
Но её index в это время в переменной ind, сам путь - в массиве arr по этому индексу.
Почти закончил! Всё получилось! Осталось поправить нюансы и будет готовый продукт - парсер картинок с выбором

Спасибо за помощь!
0
Миниатюры
Форма выбора результата для парсера  
Hugo121
6292 / 2391 / 406
Регистрация: 19.10.2012
Сообщений: 7,080
11.06.2013, 17:49 12
Афигеть
0
11.06.2013, 17:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2013, 17:49

Функции для поиска, выбора и вставки
Доброго времени суток! Возникла вот такая задача, если кто может помочь...

Диалог для выбора папки в VBA
Доброго времени суток! Скажите, плз, как вызвать диалог для выбора каталога?...

Работа с OptionButton для выбора нужного условия
Доброго времени суток. В очередной раз приходится обратиться к вам за помощью....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru