En este artículo, hemos compartido el código VBA para escribir una función personalizada para extraer el nombre del archivo y el nombre de la carpeta de la ruta del archivo.

Los datos sin procesar de este ejemplo especifican la ruta completa de ciertos archivos.

RawData

Explicación lógica

En este ejemplo, hemos creado la función personalizada de VBA «FileOrFolderName» que devuelve el nombre del archivo o carpeta como salida.

La función «FileOrFolderName» toma dos parámetros como entrada. El primer parámetro toma la ruta del archivo como entrada. El segundo parámetro toma el valor booleano como entrada, si queremos el nombre del archivo como salida, asignaremos un valor verdadero a este parámetro y si queremos el nombre de la carpeta como salida, asignaremos un valor falso a este parámetro.

Para separar el nombre del archivo y el nombre de la carpeta de la ruta del archivo, en primer lugar, encontramos la ubicación de la última aparición del separador de ruta dentro de la ruta del archivo. Después de la última aparición del separador de ruta, podemos separar fácilmente el nombre del archivo y el nombre de la carpeta como texto. En el lado derecho del separador de ruta está el nombre del archivo y el texto en el lado izquierdo del separador de ruta es el nombre de la carpeta.

Si no existe un separador de ruta en la ruta del archivo, la ruta del directorio predeterminada se especifica como el nombre de la carpeta.

Ejecutando la función personalizada

Para usar la función personalizada definida, vaya a la celda C14 e ingrese la función = FileOrFolderName (B14, FALSE) y en la celda D14, ingrese la función = FileOrFolderName (B14, TRUE), donde la celda B14 contiene la ruta del archivo.

La celda C14 dará el nombre de la carpeta y la celda D14 dará el nombre del archivo.

ArrowAfterRunningMacro

Siga a continuación el código

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

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]