Excel VBA: Как извлечь конкретную папку из пути к файлу - PullRequest
0 голосов
/ 01 октября 2018

Я ищу функцию, которая вернет четвертый файл в пути к файлу.Например, допустим, что мой путь к файлу - «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 голосов
/ 01 октября 2018

Вы можете сделать это, используя эту функцию:

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 позволяет вам выбрать, сколько уровней (каталогов) вы пройдете.

0 голосов
/ 01 октября 2018

Вы можете использовать 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
...