2015-03-03 2 views
0

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

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 

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

+0

Извините, я немного смущен. Вы хотите ** Project **? Или что-нибудь после ** C: \\ ** до следующего ** \\ ** вы можете найти на пути? – PaulFrancis

+0

@PaulFrancis Привет, в основном пользователь должен будет выбрать путь в формате «* \ SomeProjectName \\ * \ WINDOW», и мне нужно вернуть «SomeProjectName». Поэтому для любой папки «Window», которую они выбирают, мне нужна папка два раза. Надеюсь, это имеет смысл! – OreoRyan

+0

Является ли ** WINDOW ** всегда именем файла? – PaulFrancis

ответ

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) 

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

+0

Это очень помогает, спасибо !!! – OreoRyan

+0

Не беспокойтесь! Удачи :) – PaulFrancis

Смежные вопросы