Я использую msoFileDialogFolderPicker для возврата пути, когда пользователь хочет поместить отчет в определенную папку.
Пользовательская форма (ufSelRepType) отображается в макросе в тех случаях, когда в месте сохранения по умолчанию уже есть выходной файл или когда пользователь не хочет сохранять в месте по умолчанию. Настраиваемая форма задает несколько общих мест сохранения отчетов и дает возможность выбрать альтернативное местоположение. Нажатие кнопки cmdCustom делает следующее:
Private Sub cmdCustom_Click()
Application.FileDialog(msoFileDialogFolderPicker).Show
Me.Tag = CurDir
Me.Hide
End Sub
Код в макросе для обработки вывода формы прост:
strSavePath = ufSelRepType.Tag
При выборе папки строка всегда возвращается без завершающего символа "\". Однако, если выбран корень диска (мы используем подключенные диски к нашему файловому серверу, и, хотя этот случай может быть редким, это не исключительный сценарий), возвращаемая строка оканчивается на «\».
Как я могу пойти на проверку конечного "\" и обработать его?
ОБНОВЛЕНИЕ: Для решения ниже, это новый код для элемента управления формы cmdCustom:
Private Sub cmdCustom_Click()
Dim strFolderPath As String
'Getting save folder
Application.FileDialog(msoFileDialogFolderPicker).Show
strFolderPath = CurDir
'Checking that path ends in \
If Right(strFolderPath, 1) = "\" Then
GoTo Complete
Else:
strFolderPath = strFolderPath & "\"
GoTo Complete
End If
Exit Sub
Complete:
Me.Tag = strFolderPath
Me.Hide
Exit Sub
End Sub