Преглеждане на папка за избор на папка с помощта на VBA в Microsoft Excel

Anonim

В тази статия създадохме процедура, която се използва за показване на диалогов прозорец, която се използва за разглеждане на папка за избор на папка.

Този код може да се използва заедно с други макроси, където се изисква избор на папка по време на изпълнение.

Логично обяснение

В тази статия направихме препратка към две API функции за показване на диалоговия прозорец за разглеждане на папка.

Когато изберете някоя конкретна папка с помощта на браузъра на папки, диалоговият прозорец връща пътя на избраната папка.

Моля, следвайте кода по -долу

 Опция Изрично „Деклариране на потребителски тип данни“ Използва се от функцията GetFolderName Личен тип BROWSEINFO hOwner As Long pidlRoot As Long pszDisplayName As String lpszTitle As String ulFlags As Long lpfn As Long lParam As Long iImage As Long End Type Decrelar Reference Функция SHGetPathFromIDList Lib "shell32.dll" _ Псевдоним "SHGetPathFromIDListA" (ByVal pidl толкова дълъг, ByVal pszPath като низ) като дълга частна декларация функция SHBrowseForFolder Lib "shell32.dll" _ Alias ​​"SHBrowseForFolder (Msg As String) As String 'Връща името на папката, избрана от потребителя Dim bInfo As BROWSEINFO, път As String, r As Long Dim X As Long, pos As Integer bInfo.pidlRoot = 0' Тип директория за връщане bInfo .ulFlags = & H1 'Показване на диалоговия прозорец X = SHBrowseForFolder (bInfo)' Анализиране на пътя на резултата = Space $ (512) 'Calling API функция r = SHGetPathFromIDList (ByVal X, ByVal път)' Код за изтриване на допълнителни интервали в връщане на името на края на папката Ако r Тогава pos = InStr (пътека, Chr (0)) GetFolderName = Наляво (път, pos - 1) Else GetFolderName = "" Край Ако End Функция Sub TestGetFolderName () Dim FolderName As String 'Извикваща функция GetFolderName FolderName = GetFolderName ("Изберете папка") Ако FolderName = "" Тогава MsgBox "Не сте избрали папка." Друг MsgBox "Избрахте тази папка:" & Име на папка Край, ако край Sub 

Ако този блог ви е харесал, споделете го с приятелите си във Facebook. Също така можете да ни следвате в Twitter и Facebook.

Ще се радваме да чуем от вас, уведомете ни как можем да подобрим работата си и да я направим по -добра за вас. Пишете ни на имейл сайта