Страница: 1 |
Страница: 1 |
Вопрос: Два вопроса о работе с файлами. VBA Excel.?
Добавлено: 17.07.08 14:09
Автор вопроса: Aleksandr
Пожалуйста, помогите разобраться или, может, у кого-нибудь есть пример программки или кода для следующих задач.
Вопрос 1.
У меня на форме есть ЛистБокс и Картинка. Картинка меняется в зависимости от выбранного в ЛистБоксе значения (наименования оборудования). Там, в ЛистБоксе в колонке (15) лежит следующая информация - Фото\xxxxx.jpg где ххххх – каждый раз разное имя файла.
Картинка выводится таким образом.
Private Sub ListBox1_Click()
MyPath = "E:\Мои документы\База данных\" + ListBox1.Column(15)
Image4.Picture = LoadPicture(MyPath)
End Sub
Необходимо чтобы при ДаблКлик на картинке, картинка просто открывалась в просмоторщике изображений установленном по умолчанию в Виндоусе. Т.е. как будто я её открыл просто из папки Виндоуса.
Каким кодом открыть файл (картинку) с именем лежащим в ListBox1.Column(i)?
Вопрос 2.
Возможно ли вызвать из VBA Excel (скажем, при нажатии кнопки на форме) окно для выбора файла идентичное нажатию Ctrl+O в Excel? Или использовать какой-нибудь стандартный объект располагаемый на форму и какой? Для того чтобы выбрать в любом месте, в том числе и по сети и на флешке любой файл. После выбора файла переменной «ПУТЬ» присвоить путь к файлу, а второй переменной «ФАЙЛ» присвоить имя файла с расширением? Чтобы потом этот путь и файл я мог добавлять в таблицу?
Заранее спасибо!
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #1
Добавлено: 17.07.08 15:07
2:
.AllowMultiSelect = False
.InitialFileName = Worksheets("Загрузка".Range("A1".Value
If .Show = -1 Then
a = 1
.Execute
End If
End With
If a=1 Then
'Ваш код
End If
Номер ответа: 2
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #2
Добавлено: 17.07.08 15:34
1. http://www.vbnet.ru/faq/showtopic.asp?id=186
Запустить приложение, ассоциированное с расширением файла
Номер ответа: 3
Автор ответа:
Aleksandr
Вопросов: 7
Ответов: 15
Профиль | | #3
Добавлено: 17.07.08 15:37
Jasmin, спасибо тебе сново за ответы!
Последний ответ понятен и он работает, но не совсем так.
Возможно ли после выбора файла сделать так чтобы он не открывался, а просто переменным присваивались путь и имя выбранного файла. Т.е. грубо говоря, как в почтовой программе при прикреплении к письму файла, файл не открывается, а просто появляется его название в строке прикреплённых файлов. Мне нужно сделать подобие, только имя файла и путь выбранного файла записать в таблицу листа Ексель? Это озможно?
Номер ответа: 4
Автор ответа:
Aleksandr
Вопросов: 7
Ответов: 15
Профиль | | #4
Добавлено: 17.07.08 15:51
Smith, спасибо за ответ на вопрос 1!
Мне удалось применить код на рекомендованной тобой ссылке (вариант1). Всё работает.
Правда я не думал, что открывать файл через VBA так сложно!
Номер ответа: 5
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #5
Добавлено: 17.07.08 18:29
a = .SelectedItems(1) 'полный путь к файлу
' следующие 3 строки, если использовать множественный выбор
' For FileCount = 1 To .SelectedItems.Count
' MsgBox .SelectedItems(FileCount)
' Next FileCount
' .Execute 'это, если нужно открыть выбранный файл
End If
Проверка a вынесена за With, так как, если понадобиться открыть таким образом еще один файл в процессе обработки, то диалогу будет "плохо". Испытано. Лучше сразу закончить с диалогом открытия, а потом работать только с файлом.
Номер ответа: 6
Автор ответа:
Aleksandr
Вопросов: 7
Ответов: 15
Профиль | | #6
Добавлено: 18.07.08 10:44
Вау!!! Всё отлично работает! Спасибо огромное Jasmin!
Вот как всё получилось:
Private Sub CommandButton34_Click()
Dim a, MySelectedFile
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
If .Show = -1 Then
a = 1
MySelectedFile = .SelectedItems(1)
End If
End With
If a = 1 Then
MsgBox MySelectedFile
End If
End Sub
Номер ответа: 7
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #7
Добавлено: 18.07.08 12:07
Обращайтесь
По коду: В таком случае проверяй сразу переменную MySelectedFile на "". 'A' уже лишняя. Смысл был проверить было ли что-то выбрано. Сам факт, так сказать.
Номер ответа: 8
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #8
Добавлено: 18.07.08 12:10
Забыла пример:
'остальной код
End If