VBA - Извлечение конкретного имени папки из пути

У меня есть следующий код, но мне нужно настроить. Я хочу, чтобы пользователь выбрал определенную папку в проекте. Представьте себе путь "C:\Project\SomeOtherFolder\WINDOW". Приведенный ниже код заполняет текстовое поле только в том случае, если выбрана папка "ОКНО". Я просто использую это как проверку для пользователя, но на самом деле я хочу, чтобы текстовое поле заполнилось "Project".

Using fb As New FolderBrowserDialog
    If fb.ShowDialog = Windows.Forms.DialogResult.OK AndAlso _
    (IO.Path.GetFileName(fb.SelectedPath) = "WINDOW") Then
        TextBox1.Text = IO.Path.GetFileName(fb.SelectedPath)
    Else
        Exit Sub
    End If
End Using

Как я могу сделать это, пожалуйста? Большое спасибо!!!

1 ответ

Решение

Этот UDF, должен дать вам то, что вам нужно. Я создал функцию, которая возвращает имя папки из определенной папки. Я включил некоторые дополнительные параметры, чтобы вы могли (при необходимости) изменить требование.

Public Function GetFolderName(FolderPath As String, _
                              Optional endPath As String = "WINDOW", _
                              Optional moveUp As Integer = 2) As String
    Dim tmpArr() As String, retStr As String

    tmpArr = Split(FolderPath, "\")

    If InStr(FolderPath, endPath) <> 0 And moveUp <= UBound(tmpArr) Then
        retStr = tmpArr(UBound(tmpArr) - moveUp)
    End If

    GetFolderName = retStr
End Function

Так что код пройти. Вы отправляете путь, полученный на предыдущем шаге, а затем просто вызываете функцию как,

TextBox1.Text = GetFolderName(fb.SelectedPath)
'Or - However this is redundant as the Optional Parameters are declared as such by default
TextBox1.Text = GetFolderName(fb.SelectedPath, "WINDOW", 2)

Выше будет заполнить ваше текстовое поле как "Проект". Надеюсь это поможет!

Другие вопросы по тегам