2016-12-30 66 views
2

具體到VBA目錄:允許用戶指定通過Windows瀏覽選擇

是否有可能讓用戶通過標準的Windows「瀏覽」選擇指定一個目錄名和讀取,在作爲一個變量(而不是在軟件中對其進行硬編碼)。

如:

String MyStr = <Inputted full path by the user via the Windows Browse Selection> 
+0

是的,根據[文檔](https://msdn.microsoft.com/en-us/library/office/ff836226.aspx)使用'Application.FileDialog' – OldUgly

+0

謝謝。這讓我走向了正確的方向! – nas

+0

http://stackoverflow.com/a/30745070/4539709 – 0m3r

回答

2

這樣的代碼:

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 

enter image description here

+0

這也非常有幫助,它的工作;謝謝! – nas

3

這是一個功能,你可以用它來允許用戶瀏覽文件夾:

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有幫助的感謝

+0

這是非常有用的,它的工作;謝謝! – nas

2
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文件擴展名的壓縮文件爲 。

+0

..........有趣的做法.............. –

相關問題