Excel VBA:如何从文件路径提取特定文件夹

时间:2018-10-01 13:10:40

标签: excel-vba

我正在寻找一个函数,该函数将返回文件路径中的第四个文件。例如,假设我的文件路径为“ C:\ Users \ Desktop \ Programs \ Training Log \ Folder Database”,而我只想提取“ Training”文件夹并另存为变量。我该怎么做呢?

这是我当前的功能:

Function GetFilenameFromPath(ByVal strPath As String) As String

    If Right$(strPath, 1) <> "\" And Len(strPath) > 0 Then
        GetFilenameFromPath = GetFilenameFromPath(Left$(strPath, Len(strPath) - 1)) + Right$(strPath, 1)
    End If
End Function

此函数仅返回直接父文件夹。我该如何调整它以指定直接父文件夹以外的文件夹。

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用Split来获得第4部分。

Sub Sample()
    Dim FilePath As String
    Dim MyAr As Variant

    FilePath = "C:\Users\Desktop\Programs\Training Log\Folder Database"
    MyAr = Split(FilePath, "\")

    Debug.Print MyAr(4)
End Sub

答案 1 :(得分:2)

您可以使用以下功能完成此操作:

Public Function getParentFolder(path As String, Optional level As Integer = 0)
    Dim pathTokens()    As String
    pathTokens = VBA.split(path, "\")
    Debug.Assert level >= 0 And level <= UBound(pathTokens)
    getParentFolder = pathTokens(UBound(pathTokens) - level)
End Function

通过使用Optional,默认值为0,因此您可以将其用作单参数或二参数函数。 level参数使您可以选择要深入的级别(目录)。