Вопрос к читателям сайта и форума: Есть ли умельцы знающие Microsoft Access?
Если есть, напишите здесь, или в личку.
Есть вопрос по программированию во встроенном языке макросов.
А именно - Каким образом сделать так, чтобы в форме была кнопка, которая при нажатии открывала бы окно выбора директории?
Если кратко:
Есть база домов.
Простая.
В виде одной таблицы.
В таблице есть поле, в котором планируется хранить путь к папкам с фотографиями этих домов.
Так вот нужна кнопка (в уже готовой форме), которая бы при нажатии открывала окно выбора директории, чтобы потом сохранять полученный путь в поле таблицы.
Излазил уже весь Access, никак не пойму как это лучше реализовать.
...Можете отвечать сложно или кратко. Я пойму, так как сам немного разбираюсь в Access.
Если запостите готовый кусок кода в VBA, будет вообще замечательно.
P.S. ВСЕМ давшим ценный совет, плюс в репу, и мое искреннейшее почтение.
Мой аккаунт
Статьи
Поиск по сайту
[#main]
[#journal]
Главная страница форума / Разное / Флейм / Вопрос к читателям сайта и форума: Есть ли умельцы знающие Microsoft Access?
Вопрос к читателям сайта и форума: Есть ли умельцы знающие Microsoft Access?
Автор | Сообщение | ||
---|---|---|---|
Статус: Пользователь Возраст: 52 Город: Краснодар Дата регистрации: 11 апр 2005 Последнее посещение: 23 авг 2019 в 9:51 Тем: 100 Сообщений: 32705 Репутация: 803 Спасибо сказали раз: 75079 Написать личное сообщение |
18 сен 2014 в 0:22
| ||
Статус: Пользователь Возраст: 47 Город: Санкт-Петербург Дата регистрации: 9 окт 2013 Последнее посещение: 24 апр 2019 в 2:51 Тем: 0 Сообщений: 37 Репутация: 1 Спасибо сказали раз: 99 Написать личное сообщение |
18 сен 2014 в 1:49
Пусть имя кнопки cmdFileDialog Повесить на событие Click Такой обработчик Private Sub cmdFileDialog_Click() ' Requires reference to Microsoft Office 11.0 Object Library. Dim fDialog As Office.FileDialog Dim varFile As Variant Dim var SelectedFile ' Set up the File Dialog. Set fDialog = Application.FileDialog(msoFileDialogFilePicker) With fDialog ' запретить выбор более 1 файла .AllowMultiSelect = False ' Set the title of the dialog box. .Title = "Выберите файл" ' Фильтр по типу файлов .Filters.Clear .Filters.Add "jpeg pictures", "*.jpg" ' если show вернул False, значит - cancel ' а у нас в SelectedFile будет путь к одному файлу If .Show = True Then ' если .AllowMultiSelect был бы = True - то тут ' был бы перебор всех выбранных файлов For Each varFile In .SelectedItems SelectedFile = varFile Next Else MsgBox "Чувак нажал cancel" End If End With End Sub Спасибо сказали: УмНик | ||
Статус: Пользователь Возраст: 52 Город: Краснодар Дата регистрации: 11 апр 2005 Последнее посещение: 23 авг 2019 в 9:51 Тем: 100 Сообщений: 32705 Репутация: 803 Спасибо сказали раз: 75079 Написать личное сообщение |
18 сен 2014 в 5:09
Спасибо, плюс в репу и сразу уточню - база пишется на Microsoft Access 2003. Не спрашивайте - почему. Так надо. Так вот Access 2003 не понимает тип данных "Office.FileDialog". Соответственно уже на строчке объявления переменной fDialog - "Dim fDialog As Office.FileDialog" выходит сообщение об ошибке, что тип данных не определен. Как выйти из ситуации? P.S. И еще уточню. Событие на кнопке должно возвращать не имя файла, а имя директории. Но это уже можно допилить в процессе. Спасибо сказали: Ganza | ||
Статус: Пользователь Возраст: 47 Город: Санкт-Петербург Дата регистрации: 9 окт 2013 Последнее посещение: 24 апр 2019 в 2:51 Тем: 0 Сообщений: 37 Репутация: 1 Спасибо сказали раз: 99 Написать личное сообщение |
18 сен 2014 в 9:41
За плюс спасибо:-)
Тип не определен, потому что не добавлена ссылка на библиотеку ms office 11 object library. Добавить можно так- когда открыт редактор с кодом на vba, в меню сервис выберите команду ссылки. В диалоговом окне ссылки-Имя базы данных установите флажок Библиотека объектов Microsoft Office 11.0 и нажмите кнопку ОК. Пишу по памяти, доеду до работы- перепроверю. Для того, чтобы выбирать не имя файла, а имя директории, надо вместо msoFileDialogFilePicker написать msoFileDialogFolderPicker. Вроде бы так. Спасибо сказали: УмНик | ||
Статус: Пользователь Возраст: 52 Город: Краснодар Дата регистрации: 11 апр 2005 Последнее посещение: 23 авг 2019 в 9:51 Тем: 100 Сообщений: 32705 Репутация: 803 Спасибо сказали раз: 75079 Написать личное сообщение |
18 сен 2014 в 10:02
Ага, разобрался. Поставил галочку для Microsoft Office 12.0 Заменил msoFileDialogFilePicker на msoFileDialogFolderPicker. Теперь все работает. Только непонятно в какой переменной хранится А путь к выбранной в окне диалога директории хранится в "SelectedFile". К этому сообщению прикреплены файлы, но у Вас нет прав на их загрузку. | ||
Статус: Пользователь Возраст: 47 Город: Санкт-Петербург Дата регистрации: 9 окт 2013 Последнее посещение: 24 апр 2019 в 2:51 Тем: 0 Сообщений: 37 Репутация: 1 Спасибо сказали раз: 99 Написать личное сообщение |
18 сен 2014 в 11:30
Заработало, супер А что непонятно в какой переменной хранится?
| ||
Статус: Пользователь Возраст: 52 Город: Краснодар Дата регистрации: 11 апр 2005 Последнее посещение: 23 авг 2019 в 9:51 Тем: 100 Сообщений: 32705 Репутация: 803 Спасибо сказали раз: 75079 Написать личное сообщение |
18 сен 2014 в 13:03
Все понятно, все ясно, все работает. Спасибо. Еще один вопрос: Допустим есть путь к папке "C:\MyDoc". Какой скрипт повесить на кнопку, которая бы при нажатии открывала эту папку? | ||
Статус: Пользователь Возраст: 47 Город: Санкт-Петербург Дата регистрации: 9 окт 2013 Последнее посещение: 24 апр 2019 в 2:51 Тем: 0 Сообщений: 37 Репутация: 1 Спасибо сказали раз: 99 Написать личное сообщение |
18 сен 2014 в 13:32
У FileDialog есть свойство InitialDirectory.
... .AllowMultiSelect = False .InitialDirectory = "C:\MyDoc" ... :-) Спасибо сказали: УмНик | ||
Статус: Пользователь Возраст: 52 Город: Краснодар Дата регистрации: 11 апр 2005 Последнее посещение: 23 авг 2019 в 9:51 Тем: 100 Сообщений: 32705 Репутация: 803 Спасибо сказали раз: 75079 Написать личное сообщение |
18 сен 2014 в 13:37
Не совсем то.
Уже разобрался. Вот какой нужен скрипт: Private Sub Кнопка95_Click() On Error GoTo Err_Кнопка98_Click Dim stAppName As String stAppName = "explorer.exe " + [ФотоП] Call Shell(stAppName, 1) ' здесь идет открытие папки, имя папки берется из поля на форме с именем [ФотоП] Exit_Кнопка98_Click: Exit Sub Err_Кнопка98_Click: MsgBox Err.Description Resume Exit_Кнопка98_Click End Sub | ||
Статус: Пользователь Возраст: 47 Город: Санкт-Петербург Дата регистрации: 9 окт 2013 Последнее посещение: 24 апр 2019 в 2:51 Тем: 0 Сообщений: 37 Репутация: 1 Спасибо сказали раз: 99 Написать личное сообщение |
18 сен 2014 в 15:21
А, ясно, я неправильно понял вопрос.
| ||
У Вас нет прав писать в этот форум. Попробуйте зарегистрироваться или написать администратору.