W tym artykule udostępniliśmy kod VBA do pisania niestandardowej funkcji wyodrębniania nazwy pliku i nazwy folderu ze ścieżki pliku.
Surowe dane dla tego przykładu określają pełną ścieżkę niektórych plików.
Wyjaśnienie logiczne
W tym przykładzie utworzyliśmy niestandardową funkcję VBA „FileOrFolderName”, która zwraca nazwę pliku lub folderu jako dane wyjściowe.
Funkcja „FileOrFolderName” przyjmuje jako dane wejściowe dwa parametry. Pierwszy parametr przyjmuje ścieżkę pliku jako dane wejściowe. Drugi parametr przyjmuje wartość logiczną jako dane wejściowe, jeśli chcemy, aby nazwa pliku była wyjściowa, przypiszemy temu parametrowi wartość True, a jeśli chcemy, aby nazwa folderu była wyjściowa, przypiszemy do tego parametru wartość False.
Aby oddzielić nazwę pliku i nazwę folderu od ścieżki pliku, najpierw znajdujemy lokalizację ostatniego wystąpienia separatora ścieżki w ścieżce pliku. Po ostatnim wystąpieniu separatora ścieżki możemy łatwo oddzielić nazwę pliku i nazwę folderu jako tekst. Po prawej stronie separatora ścieżki znajduje się nazwa pliku, a tekst po lewej stronie separatora ścieżki to nazwa folderu.
Jeśli w ścieżce pliku nie ma separatora ścieżki, domyślna ścieżka katalogu jest określona jako nazwa folderu.
Wykonywanie funkcji niestandardowej
Aby użyć zdefiniowanej funkcji niestandardowej, przejdź do komórki C14 i wprowadź funkcję =FileOrFolderName(B14,FALSE), a w komórce D14 wprowadź funkcję =FileOrFolderName(B14,TRUE), gdzie komórka B14 zawiera ścieżkę pliku.
Komórka C14 poda nazwę folderu, a komórka D14 poda nazwę pliku.
Proszę postępować zgodnie z poniższym kodem!
Function FileOrFolderName(InputString As String, _ ReturnFileName As Boolean) As String 'Zwraca nazwę folderu lub nazwę pliku na podstawie wartości logicznej przypisanej Dim i As Integer, FolderName As String, FileName As String i = 0 'Kod używany do znalezienia ostatniej pozycji wystąpienie separatora ścieżki While InStr(i + 1, InputString, Application.PathSeparator) > 0 i = InStr(i + 1, InputString, Application.PathSeparator) Wend 'Wyodrębnij ścieżkę folderu 'Jeśli nie znaleziono separatora ścieżki, przypisz domyślna ścieżka katalogu If i = 0 Then FolderName = CurDir Else FolderName = Left(InputString, i - 1) End If 'Wyodrębnianie nazwy pliku FileName = Right(InputString, Len(InputString) - i) 'Zwracanie nazwy folderu lub pliku z funkcji opartej na parametrze ReturnFileName If ReturnFileName Then FileOrFolderName = FileName Else FileOrFolderName = FolderName End If End Function
Jeśli podobał Ci się ten blog, podziel się nim ze znajomymi na Facebooku. Możesz również śledzić nas na Twitterze i Facebooku.
Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy poprawić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail