具體到VBA目錄:允許用戶指定通過Windows瀏覽選擇
是否有可能讓用戶通過標準的Windows「瀏覽」選擇指定一個目錄名和讀取,在作爲一個變量(而不是在軟件中對其進行硬編碼)。
如:
String MyStr = <Inputted full path by the user via the Windows Browse Selection>
具體到VBA目錄:允許用戶指定通過Windows瀏覽選擇
是否有可能讓用戶通過標準的Windows「瀏覽」選擇指定一個目錄名和讀取,在作爲一個變量(而不是在軟件中對其進行硬編碼)。
如:
String MyStr = <Inputted full path by the user via the Windows Browse Selection>
這樣的代碼:
Sub MAIN()
Dim folder As String
folder = GetFolder
End Sub
Function GetFolder() As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select a Folder"
.AllowMultiSelect = False
.InitialFileName = Application.DefaultFilePath
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function
這也非常有幫助,它的工作;謝謝! – nas
這是一個功能,你可以用它來允許用戶瀏覽文件夾:
Public Function pickFolder() As String
Dim strSelectedItem As String
Dim dlgPickFolder As FileDialog
Set dlgPickFolder = Application.FileDialog(msoFileDialogFolderPicker)
With dlgPickFolder
.AllowMultiSelect = False
End With
If dlgPickFolder.Show = -1 Then
strSelectedItem = dlgPickFolder.SelectedItems(1) & "\"
Else
strSelectedItem = ""
Set fd = Nothing
End If
Set fd = Nothing
pickFolder = strSelectedItem
End Function
你可以使用它只是使用此功能設置所需變量的值:
Dim sFolder As String
sFolder = pickFolder()
請讓我們知道,如果是我用下面的標誌選項BIF_RETURNONLYFSDIRS有幫助的感謝
這是非常有用的,它的工作;謝謝! – nas
Set bffShell = CreateObject("Shell.Application")
Set bff = bffShell.BrowseForFolder(0, "Select the My Documents folder", &h4049)
If Err.number<>0 Then
MsgBox "Error Setting up Browse for Folder"
Else
A = bff.ParentFolder.ParseName(bff.Title).Path
If err.number=424 then err.clear
Msgbox A
End If
(00000001 ),BIF_RETURNFSANCESTORS(0x00000008),BIF_NEWDIALOGSTYLE(0x00000040)和BIF_BROWSEINCLUDEFILES(0x00004000)。
這些都是從MSDN https://msdn.microsoft.com/en-us/library/windows/desktop/bb773205(v=vs.85).aspx
ulFlags類型標誌選項:UINT
指定該對話框中的選項標誌。此成員可以是 0或以下值的組合。版本號參考 SHBrowseForFolder所需的最低版本的Shell32.dll到 識別在以後的版本中添加的標誌。有關更多信息,請參閱Shell和公共控件 版本。
BIF_RETURNONLYFSDIRS(00000001)
00000001。只返回文件系統目錄。如果用戶選擇 不屬於文件系統的文件夾,則OK按鈕呈灰色。
注意「\ server」項目以及 「\ server \ share」和目錄項目保持啓用「確定」按鈕。但是,如果用戶選擇 「\ server」項目,SHBrowseForFolder返回的PIDL傳遞到 SHGetPathFromIDList失敗。
BIF_DONTGOBELOWDOMAIN(0x00000002)
0x00000002。請勿在域對話框的樹視圖控件 中包含域級別以下的網絡文件夾。
BIF_STATUSTEXT(0x00000004)
0x00000004。在對話框中包含狀態區域。回調 函數可以通過發送消息到對話框 框來設置狀態文本。當指定BIF_NEWDIALOGSTYLE時,不支持此標誌。
BIF_RETURNFSANCESTORS(0x00000008)
0x00000008。只返回文件系統祖先。祖先是位於名稱空間層次結構中根文件夾下的 子文件夾。 如果用戶選擇不屬於 文件系統的根文件夾的祖先,則OK按鈕呈灰色。
BIF_EDITBOX(0x00000010)
0x00000010。版本4.71。在瀏覽對話框 中包含一個編輯控件,允許用戶鍵入項目的名稱。
BIF_VALIDATE(0x00000020)
0x00000020。版本4.71。如果用戶在 編輯框中輸入了無效名稱,則瀏覽對話框將使用BFFM_VALIDATEFAILED消息調用應用程序的 BrowseCallbackProc。如果未指定BIF_EDITBOX,則忽略此標誌 。
BIF_NEWDIALOGSTYLE(0x00000040)
0x00000040。版本5.0。使用新的用戶界面。設置此標誌 爲用戶提供了可調整大小的較大對話框。 對話框有幾個新功能,包括:在對話框中拖放 功能,重新排序,快捷菜單,新的 文件夾,刪除和其他快捷菜單命令。
注意如果COM是通過CoInitializeEx的與 COINIT_MULTITHREADED標誌設置初始化,如果的SHBrowseForFolder BIF_NEWDIALOGSTYLE傳遞失敗。
BIF_BROWSEINCLUDEURLS(0x00000080)
0x00000080。版本5.0。瀏覽對話框可以顯示URL。還必須設置 BIF_USENEWUI和BIF_BROWSEINCLUDEFILES標誌。如果這三個標誌中的任何一個 未設置,瀏覽器對話框會拒絕URL。 即使設置了這些標誌,僅當包含所選項目的文件夾支持URL時,瀏覽對話框纔會顯示URL 。當 文件夾的IShellFolder :: GetAttributesOf方法被調用以請求 所選項目的屬性時,該文件夾必須設置SFGAO_FOLDER 屬性標誌。否則,瀏覽對話框將不會顯示 URL。
BIF_USENEWUI
版本5.0。使用新的用戶界面,包括一個編輯框。此 標誌等同於BIF_EDITBOX | BIF_NEWDIALOGSTYLE。
注意如果COM是通過CoInitializeEx的與 COINIT_MULTITHREADED標誌設置初始化,如果BIF_USENEWUI 傳遞的SHBrowseForFolder失敗。
BIF_UAHINT(0x00000100)
0x00000100。版本6.0。與BIF_NEWDIALOGSTYLE結合使用時,會在對話框中添加一個 用法提示,以代替編輯框。 BIF_EDITBOX 覆蓋此標誌。
BIF_NONEWFOLDERBUTTON(0x00000200)
0x00000200。版本6.0。不要在 瀏覽對話框中包含新建文件夾按鈕。
BIF_NOTRANSLATETARGETS(0x00000400時)
0x00000400時。版本6.0。當所選項目是快捷方式時,返回 快捷方式本身的PIDL而不是其目標。
BIF_BROWSEFORCOMPUTER(0x00001000)
0x00001000。只返回電腦。如果用戶選擇任何其他 比計算機,確定按鈕呈灰色。
BIF_BROWSEFORPRINTER(0x00002000)
0x00002000。只允許選擇打印機。如果用戶選擇 以外的其他任何打印機,則OK按鈕呈灰色。
在Windows XP和更高版本的系統中,最佳做法是使用Windows樣式對話框,將對話框的根設置爲打印機和傳真文件夾(CSIDL_PRINTERS)。
BIF_BROWSEINCLUDEFILES(0x00004000)
0x00004000。版本4.71。瀏覽對話框還將文件 顯示爲文件夾。
BIF_SHAREABLE(0x00008000)
0x00008000。版本5.0。瀏覽對話框可以在遠程系統上顯示可共享的 資源。這適用於 想要在本地系統上公開遠程共享的應用程序。 BIF_NEWDIALOGSTYLE 標誌也必須設置。
BIF_BROWSEFILEJUNCTIONS(0x00010000在)
0x00010000在。 Windows 7和更高版本。允許瀏覽文件夾連接,例如 庫或帶有.zip文件擴展名的壓縮文件爲 。
..........有趣的做法.............. –
是的,根據[文檔](https://msdn.microsoft.com/en-us/library/office/ff836226.aspx)使用'Application.FileDialog' – OldUgly
謝謝。這讓我走向了正確的方向! – nas
http://stackoverflow.com/a/30745070/4539709 – 0m3r