Create a function which uses Application.FileDialog
. The FileDialog
is modal.
This function will return the user's folder selection if they made one, or an empty string if they clicked cancel on the FileDialog
.
Public Function FolderSelection() As String
Dim objFD As Object
Dim strOut As String
strOut = vbNullString
'msoFileDialogFolderPicker = 4
Set objFD = Application.FileDialog(4)
If objFD.Show = -1 Then
strOut = objFD.SelectedItems(1)
End If
Set objFD = Nothing
FolderSelection = strOut
End Function
I think you can use that function in your command button's click event.
Dim strChoice As String
strChoice = FolderSelection
If Len(strChoice) > 0 Then
Me.TextBoxName = strChoice
Else
' what should happen if user cancelled selection?
End If
If you're concerned that Microsoft may remove the FileDialog
object from Office someday, you can use the Windows API method instead: BrowseFolder Dialog.