Excel VBA - обьект Browse

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
_Andrew
Сообщения: 23
Зарегистрирован: 02 дек 2005, 12:51

Подскажите есть ли в VBA стандартный обьект Browse(не уверен что он именно так называется) с помощью которого можно производить выбор директории или файла.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Есть 2 пути
1) использовать функци WinAPI (сложнее для начинающих)
2) использовать ActiveScripting (проще, но требует scrrun.dll, которая, впрочем, является стандартным компонентом Windows)

Для первого - изучайте WinAPI
Для второго:
Подключите с помощью меню Tools/References к VBA проекту "Microsotf Scripting Runtime".
И пишите:

Код: Выделить всё

  Dim fs As New Scripting.FileSystemObject, dd As Scripting.Folders, ff As Scripting.Files
  Dim d As Scripting.Folder, f As Scripting.File

  Set dd = fs.GetFolder("C:\")
  Set ff = dd.Files
  For each d in dd ------- Это цикл по именам папок
     d.SubFolders ------- Это коллекция подпапок в папке d
  For each f in ff ------ Это по всем файлам

Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Сечас подумал.....

Возможно имелось в виду диалоговое окошко "Выбор папки"

Тогда так:
Подключите аналогично к проекту библиотеку "Microsoft Shell Controls And Automations"

Код: Выделить всё

Sub qwe()
  Dim sh As New Shell32.Shell
  Dim f As Shell32.Folder
  Set f = sh.BrowseForFolder(0, "qwe", 0)
    
  'f - это папка Ставьте после f точку и в подстрочнике ищите нужные свойства и методы

End Sub
Данная библиотека умеет работать с ярлыками, менюшками, которые у файлов в проводнике появляются по правой кнопке, с пространством имен Windows (т.е. в отличие от Sripting позволяет ходить и по виртуальным папкам Windows shell), а также с самими окнами проводника.
alexx
Сообщения: 116
Зарегистрирован: 02 июл 2004, 22:29
Откуда: Hamburg

Hyжeн диaлoг?
Прощe:

(Excel)

Код: Выделить всё

file = Application.GetOpenFilename()
-------------
Лень - двигатель прогресса!
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

смотрите темы...
для выбора папки -
[4] Надстройка Excel получения списка папок и файлов
forum/viewtopic.php?t=4705

для выбора файлов -
Проблема с функцией GetOpenFileName
forum/viewtopic.php?t=4797
Ответить