Select folder names (again)
2009-04-02 Files & Folders 0 309
This is an update or addition to the old article about the same topic.
With the function below it is possible to let the user select a folder. The function returns the complete path to the selected folder and you can use that information in your macro to e.g. save a document or read input files.
Function BrowseForFolder(Optional ByVal strCaption As String = vbNullString, _ Optional strInitialFolder As String = vbNullString) As String Dim strFolder As String strFolder = vbNullString If Len(strInitialFolder) = 0 Then strInitialFolder = CurDir End If If Len(strCaption) = 0 Then strCaption = "Select a folder:" End If On Error Resume Next With Application.FileDialog(msoFileDialogFolderPicker) .Title = strCaption .InitialFileName = strInitialFolder If .Show Then strFolder = .SelectedItems(1) End If End With On Error GoTo 0 BrowseForFolder = strFolder End FunctionYou can use the function like this:
Sub ExampleBrowseForFolder() Dim strTargetFolder As String, strTargetFile As String strTargetFolder = BrowseForFolder("Please select a target folder:", "C:\My Documents\") If Len(strTargetFolder) = 0 Then Exit Sub ' no folder selected If Right$(strTargetFolder, 1) <> Application.PathSeparator Then strTargetFolder = strTargetFolder & Application.PathSeparator End If strTargetFile = strTargetFolder & "Important Report " & Format(Date, "yyyy-mm-dd") & ".xls" If Len(Dir(strTargetFile)) = 0 Then ActiveWorkbook.SaveAs strTargetFile Else MsgBox "The target file exist already!", vbInformation End If End Sub