1 / 1 / 0
Регистрация: 09.12.2013
Сообщений: 42
|
|
1 | |
Создать диалог выбора папки для VBA (SolidWorks 2013)10.12.2013, 00:10. Показов 9902. Ответов 16
Метки нет (Все метки)
Всем доброго дня! Подскажите, пожалуйста, как создать диалог выбора папки для VBA. Работаю в программе SW2013. Есть форма, в которой кнопка должна выполнять действие выбора папки и затем сохранять этот путь в переменную. Спасибо!
0
|
10.12.2013, 00:10 | |
Ответы с готовыми решениями:
16
Диалог для выбора папки в VBA Диалог для выбора сетевой папки Как создать диалог выбора шрифта и диалог выбора цвета Вывести диалог для выбора папки перед сохранением файла |
3195 / 850 / 194
Регистрация: 14.01.2013
Сообщений: 4,068
|
||||||
10.12.2013, 14:45 | 2 | |||||
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
||||||
10.12.2013, 15:02 | 3 | |||||
Думаю это с сайта EducatedFool:
0
|
1 / 1 / 0
Регистрация: 09.12.2013
Сообщений: 42
|
|
10.12.2013, 15:51 [ТС] | 4 |
выделяет ": PS = Application.PathSeparator" желтым и пишет ошибку: "Object doesn't support this property or method"
0
|
6081 / 1325 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
10.12.2013, 16:37 | 5 | |||||
rekord522, ребята же оговорились, что не знакомы с объектной моделью SolidWorks. Поэтому вам не обязательно копировать все с точностью до буквы.
Попробуйте сделать совсем просто:
Aksima
0
|
1 / 1 / 0
Регистрация: 09.12.2013
Сообщений: 42
|
|
10.12.2013, 17:01 [ТС] | 6 |
Похоже, у Application нет таких методов, как PathSeparator и FileDialog. Кстати, прошу прощения, я не профессиональный программист, поэтому в терминах могу ошибаться. Методом я называю то, что ставится после точки "Application." Кто не знаком с объектами SolidWorks могу написать, какие методы доступны у Application.
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
||||||
10.12.2013, 17:13 | 7 | |||||
Можете попробовать перебрать все диалоги в цикле - так можно найти нужный.
Подсказка выше. Добавлено через 2 минуты Например:
0
|
1 / 1 / 0
Регистрация: 09.12.2013
Сообщений: 42
|
|
10.12.2013, 17:34 [ТС] | 8 |
Цикл прогоняется, каждый раз происходит вход в тело цикла, те условие цикла каждый раз верно, но при этом никакого сообщения о выбранной папке не появляется, и окна с диалогом выбора папки тоже. Вообще ничего. Если закомментировать "& .SelectedItems(1)", то появляется сообщение "Выбрана папка ", но не более того
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
||||||
10.12.2013, 18:01 | 10 | |||||
А так:
0
|
6081 / 1325 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
10.12.2013, 22:59 | 11 | |||||
rekord522, в поисках надежного решения вашей проблемы нашел на MSDN упоминание о Windows API функции SHBrowseForFolder, которая, как следует из ее описания, позволяет вызывать диалог для просмотра папок (и выбора нужной). Вот ссылки на использованные мной источники (правда, они на английском языке):
Назависимая от объектной модели приложения функция для просмотра папок
Надеюсь, теперь у вас все получится. Даже не надеюсь, а почти уверен - ведь вероятность того, что у вас есть Windows, очень высока... С уважением, Aksima
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
||||||
10.12.2013, 23:08 | 12 | |||||
Такой ещё вариант (замените Application.PathSeparator на "\", если не работает):
1
|
1 / 1 / 0
Регистрация: 09.12.2013
Сообщений: 42
|
|
11.12.2013, 00:33 [ТС] | 13 |
Sasha_Smirnov , открывает окно с ошибкой "Sub or Function not defined". При этом выделяется Dialogs
Добавлено через 26 минут Hugo121, все прекрасно работает, спасибо! Есть некоторые моменты: 1. В первоначальном варианте, как написано у Вас открывается диалог выбора папки. Затем, если нажать "Отмена", то выделяется ": Application.ScreenUpdating = True" с комментарием Object doesn't support this property or method. Если выбрать какую-нибудь папку и нажать ОК, то с теми же комментариями выделяется "BrowseForFolderShell = objFolder.Items.Item.Path _ & Application.PathSeparator". То есть в любом случае программа вылетает. 2. Замена "Application.PathSeparator на "\"" - спасает дело, действительно. 3. Если закомментировать соответственно строку "Else: Application.ScreenUpdating = True: End", то все работает. Вопрос - насколько это критично?
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
11.12.2013, 00:46 | 14 |
Application.ScreenUpdating - это экселевское обновление экрана (изменения на листе). Очевидно что в солидворке этого нет, или называется иначе, или вообще не нужно. Т.е. убирайте.
0
|
1 / 1 / 0
Регистрация: 09.12.2013
Сообщений: 42
|
|
11.12.2013, 00:48 [ТС] | 15 |
Aksima, выдает ошибку на объявление функций Declare Function SHBrowseForFolder и Declare Function SHGetPathFromIDList:
"The code in this project must be updated for use on 64-bit systems. Please review and update Declare statements and then mark them with the PtrSafe attribute"
0
|
6081 / 1325 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|
11.12.2013, 10:21 | 16 |
rekord522, если у вас 64-битная система, то необходима дополнительная адаптация API-функций под работу на 64-битной системе.
Полезную информацию о том, как это сделать, вы можете найти в недавней теме Адаптация кода для 64 битных систем (x64). С уважением, Aksima
0
|
1 / 1 / 0
Регистрация: 09.12.2013
Сообщений: 42
|
|
11.12.2013, 11:29 [ТС] | 17 |
Aksima, разобрался, все прекрасно работает, спасибо!!
Отдельное спасибо всем, кто не прошел мимо и заинтересовался проблемой!
0
|
11.12.2013, 11:29 | |
11.12.2013, 11:29 | |
Помогаю со студенческими работами здесь
17
Копирование файлов и диалог выбора папки с кнопкой "Создать папку" Как в Delfi 7 при нажатии Batton открыть диалог выбора папки в подкаталоге программы и сохранить путь папки в Edit Диалог выбора папки Диалог выбора папки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |