2015-03-03 285 views
0

我有以下代碼,但我需要調整。我希望用戶從項目中選擇一個特定的文件夾。想象一下路徑「C:\ Project \ SomeOtherFolder \ WINDOW」。如果選擇了「WINDOW」文件夾,下面的代碼只填充文本框。我只是使用這個作爲用戶的檢查,但我實際上希望文本框填寫「項目」。VBA - 從路徑中提取特定的文件夾名稱

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

對不起,我有點困惑。你想**項目**?或者** C:\\ **之後的任何內容,直到下一個** \ **,您可以在路徑中找到? – PaulFrancis 2015-03-03 10:59:59

+0

@PaulFrancis嗨,基本上用戶將不得不以格式「* \ SomeProjectName \\ * \ WINDOW」選擇一個路徑,我需要返回「SomeProjectName」。所以對於他們選擇的任何「窗口」文件夾,我都需要文件夾雙向。希望是有道理的! – OreoRyan 2015-03-03 11:04:32

+0

是** WINDOW **總是文件名嗎? – PaulFrancis 2015-03-03 11:13:16

回答

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) 

上面的代碼將填充文本框爲「Project」。希望這可以幫助 !

+0

非常有幫助,謝謝! – OreoRyan 2015-03-03 11:50:56

+0

不用擔心!祝你好運 :) – PaulFrancis 2015-03-03 11:52:48

相關問題