2015-03-03 123 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

相关问题