Как извлечь имя файла из пути? - PullRequest
52 голосов
/ 16 ноября 2009

Как извлечь имя файла myfile.pdf из C:\Documents\myfile.pdf в VBA?

Ответы [ 16 ]

1 голос
/ 23 августа 2013

Вот альтернативное решение без кода. Этот VBA работает в панели формул Excel:

Чтобы извлечь имя файла:

=RIGHT(A1,LEN(A1)-FIND("~",SUBSTITUTE(A1,"\","~",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))

Чтобы извлечь путь к файлу:

=MID(A1,1,LEN(A1)-LEN(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))))
0 голосов
/ 15 июня 2019

Я использую эту функцию ... Функция VBA:

Function FunctionGetFileName(FullPath As String) As String
'Update 20140210
Dim splitList As Variant
splitList = VBA.Split(FullPath, "\")
FunctionGetFileName = splitList(UBound(splitList, 1))
End Function

Теперь введите

=FunctionGetFileName(A1) in youe required cell.

или Вы можете использовать эти ...

=MID(A1,FIND("*",SUBSTITUTE(A1,"\","*",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))
0 голосов
/ 11 ноября 2018
Function file_name_only(file_path As String) As String

Dim temp As Variant

temp = Split(file_path, Application.PathSeparator)

file_name_only = temp(UBound(temp))

End Function
  1. здесь вы даете имя вашего файла в качестве ввода функции
  2. функция разбиения VBA разделяет путь на разные части, используя «\» в качестве разделителя пути и сохраняет их в массиве с именем «temp»
  3. UBound () находит максимальный номер элемента массива и, наконец, присваивает результат функции "file_name_only"

Надеюсь, это будет полезно.

0 голосов
/ 25 августа 2015
Dim nme As String = My.Computer.FileSystem.GetFileInfo(pathFicheiro).Name
Dim dirc As String = My.Computer.FileSystem.GetFileInfo(nomeFicheiro).Directory
0 голосов
/ 03 октября 2014

Это почерпнуто из Твигги @ http://archive.atomicmpc.com.au и других мест:

'since the file name and path were used several times in code
'variables were made public

Public FName As Variant, Filename As String, Path As String

Sub xxx()
   ...
   If Not GetFileName = 1 Then Exit Sub '
   ...
End Sub

Private Function GetFileName()
   GetFileName = 0 'used for error handling at call point in case user cancels
   FName = Application.GetOpenFilename("Ramp log file (*.txt), *.txt")
   If Not VarType(FName) = vbBoolean Then GetFileName = 1 'to assure selection was made
   Filename = Split(FName, "\")(UBound(Split(FName, "\"))) 'results in file name
   Path = Left(FName, InStrRev(FName, "\")) 'results in path
End Function
0 голосов
/ 03 октября 2013

Мне нужен был путь, а не имя файла.

Итак, чтобы извлечь путь к файлу в коде:

JustPath = Left(sFileP, Len(sFileP) - Len(Split(sFileP, "\")(UBound(Split(sFileP, "\"))))) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...