Привет всем.
Вижу, что постоянно на форуме возникают вопросы по поводу удобного выбора папки на каком-либо диске компьютера. Я тоже довольно часто сталкивался с данным вопросом. Но часто бывало так, что найденное решение часто не подходило для другой среды (например выбор папки в excel и outlook - это две большие разницы).
Сегодня бился полдня и нашёл способ, который работает (по крайней мере у меня) ВЕЗДЕ. И в VB, и в VBS, и в VBA
Посмотрите! Может быть кому-то пригодится!!!
| Код | '''''''''''''''''''' ' Функция выбора папки/пути ' Используемые аргументы: ' strTitle - текст, отображаемый над окном выбора папки ' lngRegim - режим отображения окна выбора ' может комбинироваться путём сложения системных констант ' ' Const BIF_STATUSTEXT = 4 ' Const BIF_RETURNONLYFSDIRS = 1 ' Const BIF_DONTGOBELOWDOMAIN = 2 ' Const BIF_BROWSEINCLUDEFILES = 16384 ' Const BIF_EDITBOX = 16 ' Const BIF_NEWDIALOGSTYLE = 64 ' Const BIF_NONEWFOLDERBUTTON = 512 ' и др. ' ' В случае нажатия на кнопку "Отмена" ("Cancel") функция возвращает "пустую" строку ' '''''''''''''''''''' Function strGetAbsoluteFolderPathName(ByVal strTitle As String, ByVal lngRegim As Long) As String ' Определяем переменные Dim objShell As Object Dim objFolder As Object Dim objFolderItem As Object ' Создаём переменную Shell Set objShell = CreateObject("Shell.Application") ' Выводим диалоговое окно выбора папки с нужными параметрами Set objFolder = objShell.BrowseForFolder(0, strTitle, lngRegim) ' Если объект создан не удачно (НЕ выбрали какую-то папку), то ' возвращаем пустую строку в качестве результата работы функции... If objFolder Is Nothing Then strGetAbsoluteFolderPathName = "" Exit Function End If ' Получаем объект, у которого "можно спросить" его path Set objFolderItem = objFolder.Self
' Получаем значение Path strGetAbsoluteFolderPathName = objFolderItem.Path
' Удаляем все использованные объекты Set objFolderItem = Nothing Set objFolder = Nothing Set objShell = Nothing End Function
|
|