Страницы: 1
RSS
Выпадающий список с ссылками на фото.
 
Здравствуйте.
Возможно ли создать выпадающий список со списком названий фотографий с определенной папки и чтоб при выборе открывалась фото в определенной программе.
 
Это не подойдёт?
 
Поможет макрос из одной строки - при изменении ячейки (которая с выпадающим списком), запускать файл, путь к которому указан в ячейке.

Этот код надо вставить в модуль листа:
(правой кнопкой на ярлычке листа - пункт ИСХОДНЫЙ ТЕКСТ)

Код
1
2
3
4
5
6
7
Private Sub Worksheet_Change(ByVal Target As Range) ' срабатывает при изменении ячеек
    On Error Resume Next: Err.Clear
    If Target.Address = [b5].Address Then    ' укажите здесь свою ячейку
        ПутьКФайлу$ = "путь к папке\" & Target    ' путь + имя файла из ячейки
        CreateObject("wscript.shell").Run """" & ПутьКФайлу$ & """"  ' открываем файл
    End If
End Sub


А если надо вставить много картинок прямо в ваш файл Excel -
можете воспользоваться специальной надстройкой для вставки изображений:
http://excelvba.ru/programmes/PastePictures
 
Юрий М, нет, это, к сожалению, не подходит.
 
EducatedFool  Спасибо ,вроде получается, но возник еще вопрос, как сделать чтоб при добавлении в папку новой фотографии, название бы появлялось в списке.
 
Combobox берет данные для выпадающего списка из ячеек, верно?

Вот и сделайте макрос, который обновляет этот список.
Вам поможет эта функция:
http://excelvba.ru/code/FilenamesCollection

PS: Автоматически, при появлении нового файла, список обновляться не будет
(это можно сделать, но код очень сложный)

Потому проще написать небольшой макрос (примеры - в поиске по application.OnTime), который запускается с заданным интервалом, и обновляет исходные данные для выпадающего списка.

В частности, вам подойдёт такой макрос, обновляющий список файлов каждые 10 секунд:

Код
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub ОбновитьСписокИменФайлов()
    Dim coll As Collection
    ' считываем в колекцию coll нужные имена файлов
    Set coll = FilenamesCollection("полный путь к папке\", "*.*")
 
    ' выводим результаты (список файлов) на лист
    For i = 1 To coll.Count    ' перебираем все элементы коллекции, содержащей пути к файлам
        ИмяФайла = Dir(coll(i))
        Cells(4 + i, 13).Value = ИмяФайла
    Next
 
    Application.OnTime Now + 10 / 86400, "ОбновитьСписокИменФайлов"
End Sub
Изменено: EducatedFool - 31.01.2013 07:52:11
 
Спасибо, всё получилось благодаря вам.
Страницы: 1
Читают тему
Наверх
Loading...