В этой статье мы поделились кодом VBA для написания пользовательской функции для извлечения имени файла и имени папки из пути к файлу.

Необработанные данные для этого примера указывают полный путь к определенным файлам.

RawData

Логическое объяснение

В этом примере мы создали специальную функцию VBA «FileOrFolderName», которая возвращает имя файла или папки в качестве вывода.

Функция FileOrFolderName принимает на вход два параметра. Первый параметр принимает путь к файлу в качестве входных данных. Второй параметр принимает логическое значение в качестве входных данных, если мы хотим, чтобы имя файла было выходным, мы присвоим этому параметру значение True, и если мы хотим, чтобы имя папки было выходным, мы присвоим этому параметру значение False.

Для отделения имени файла и имени папки от пути к файлу, во-первых, мы находим место последнего появления разделителя пути в пути к файлу. После последнего появления разделителя пути мы можем легко разделить имя файла и имя папки как текст. Справа от разделителя пути находится имя файла, а текст слева от разделителя пути — это имя папки.

Если в пути к файлу не существует разделителя пути, то в качестве имени папки указывается путь к каталогу по умолчанию.

Выполнение пользовательской функции

Для использования определенной настраиваемой функции перейдите в ячейку C14 и введите function = FileOrFolderName (B14, FALSE), а в ячейку D14 введите function = FileOrFolderName (B14, TRUE), где ячейка B14 содержит путь к файлу.

В ячейке C14 будет имя папки, а в ячейке D14 — имя файла.

ArrowAfterRunningMacro

Пожалуйста, введите код ниже

Function FileOrFolderName(InputString As String, _

ReturnFileName As Boolean) As String



'Returns the foldername or the filename based on boolean value assigned

Dim i As Integer, FolderName As String, FileName As String

i = 0

'Code used for finding the position of last occurence of path separator

While InStr(i + 1, InputString, Application.PathSeparator) > 0

i = InStr(i + 1, InputString, Application.PathSeparator)

Wend

'Extract the folder path

'If No occurence of path separator is found then assign the default directory path

If i = 0 Then

FolderName = CurDir

Else

FolderName = Left(InputString, i - 1)

End If

'Extracting the file name

FileName = Right(InputString, Len(InputString) - i)

'Returning the folder or file name from function based on ReturnFileName parameter

If ReturnFileName Then

FileOrFolderName = FileName

Else

FileOrFolderName = FolderName

End If

End Function

Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.

Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]