In dit artikel hebben we VBA-code gedeeld voor het schrijven van een aangepaste functie voor het extraheren van de bestandsnaam en mapnaam uit het bestandspad.
Ruwe gegevens voor dit voorbeeld specificeren het volledige pad van bepaalde bestanden.
Logische uitleg
In dit voorbeeld hebben we de aangepaste VBA-functie "FileOrFolderName" gemaakt die de bestands- of mapnaam als uitvoer retourneert.
De functie "FileOrFolderName" heeft twee parameters als invoer. De eerste parameter neemt het bestandspad als invoer. De tweede parameter neemt Booleaanse waarde als invoer, als we een bestandsnaam als uitvoer willen, zullen we True-waarde toewijzen aan deze parameter en als we een mapnaam als uitvoer willen, zullen we een False-waarde toewijzen aan deze parameter.
Voor het scheiden van de bestandsnaam en mapnaam van het bestandspad, vinden we eerst de locatie van het laatste voorkomen van padscheiding binnen het bestandspad. Na de laatste keer dat het padscheidingsteken is opgetreden, kunnen we de bestandsnaam en mapnaam eenvoudig als tekst scheiden. Aan de rechterkant van het padscheidingsteken staat de bestandsnaam en tekst aan de linkerkant van het padscheidingsteken is de mapnaam.
Als er geen padscheidingsteken bestaat in het bestandspad, wordt het standaardmappad opgegeven als de mapnaam.
De aangepaste functie uitvoeren
Om de gedefinieerde aangepaste functie te gebruiken, gaat u naar cel C14 en voert u de functie =FileOrFolderName(B14,FALSE) in en voert u in cel D14 de functie =FileOrFolderName(B14,TRUE) in, waarbij cel B14 het bestandspad bevat.
Cel C14 geeft de mapnaam en cel D14 geeft de bestandsnaam.
Volg hieronder voor de code:
Functie FileOrFolderName(InputString As String, _ ReturnFileName As Boolean) As String 'Retourneert de mapnaam of de bestandsnaam op basis van de toegewezen Booleaanse waarde Dim i As Integer, FolderName As String, FileName As String i = 0 'Code gebruikt voor het vinden van de positie van de laatste voorkomen van padscheiding While InStr(i + 1, InputString, Application.PathSeparator) > 0 i = InStr(i + 1, InputString, Application.PathSeparator) Wend 'Extract the folder path 'Als er geen path separator is gevonden, wijs dan toe het standaard directorypad If i = 0 Then FolderName = CurDir Anders FolderName = Left(InputString, i - 1) End If 'Extracting the file name FileName = Right(InputString, Len(InputString) - i) 'Return the folder of file name van functie gebaseerd op parameter ReturnFileName If ReturnFileName Then FileOrFolderName = FileName Else FileOrFolderName = FolderName End If End Functie
Als je deze blog leuk vond, deel hem dan met je vrienden op Facebook. Ook kunt u ons volgen op Twitter en Facebook.
We horen graag van u, laat ons weten hoe we ons werk kunnen verbeteren en voor u kunnen verbeteren. Schrijf ons op de e-mailsite