【问题标题】:How to get the name of the parent folder from a file path?如何从文件路径中获取父文件夹的名称?
【发布时间】:2016-12-29 12:42:45
【问题描述】:

使用 VBA,是否可以获取包含文件的文件夹的名称?

输入:C:\Windows\System32\notepad.exe

输出:System32

【问题讨论】:

  • StrReverse(Split(StrReverse("C:\Windows\System32\notepad.exe"), "\")(1))
  • 谢谢马特,这很接近,但它会返回完整的父路径

标签: vba path directory


【解决方案1】:

你可以做的更简单(不需要参考):

Function ParentFolder(ByVal path As String)
        vArray = Split(path, "\")
        size = UBound(vArray)
        ParentFolder= vArray(size - 1)
End Function

然后调用

ParentFolder( "what\ever\path\to\a\file.ext" )

如果你需要一个文件夹的父文件夹,把最后一行替换为

ParentFolder = vArray(size)

例如当前应用程序(excel工作簿)的父文件夹

ParentFolder( ActiveWorkbook.path )

【讨论】:

    【解决方案2】:

    这将返回父文件夹名称:

    Public Function GetParentFolderName(ByVal path As String) As String
        Dim result As String
        With fso = CreateObject("Scripting.FileSystemObject")
            result = .GetParentFolderName(path)
            GetParentFolderName = Mid(result, InStrRev(result, "\") + 1)
        End With
    End Function
    

    用法:

    Sub GetParentFolderNameTest()
        Debug.Print GetParentFolderName("C:\Windows\System32\notepad.exe")
    End Sub
    

    输出:

    System32
    

    【讨论】:

    • @Fidel ...您可以在文档部分写来提高技能。而不是提出问题并给出答案..谢谢。
    • @HA560 我认为这本身不值得一个主题(或问答)...GetParentFolderName 已经记录在案,InStrRev 也是如此 - 这实际上只是结合了二。
    • SO 上的绝大多数解决方案都是简单代码的组合。我发布问答的原因是因为我没有在 SO 或其他地方找到解决此问题的方法。
    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 2011-04-13
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多