文章背景:在日常工作中,有时需要从绝对路径中提取文件名。比如,已知某个文件的存储路径,想要获取最后的文件名称。下面介绍两种方法。
(1) Excel函数法
TRIM(RIGHT(SUBSTITUTE(A1,"\",REPT(" ",99)),99))
\
替换成99个空格。 思路分析:针对文件路径,先用99个空格替换掉路径中的斜杆\
;再从字符串右侧起,获取99个字符(新字符串),此时,新字符串内既有文件名,也有空格;最后,通过trim函数,移除首尾的空格,从而得到所需要的文件名。
(2) VBA法(创建自定义函数)
Option Explicit
Function getFileName(path As String, Optional sep As String = "\") As String
Dim arrSplitStrings() As String
Dim num As Integer
arrSplitStrings = Split(path, sep)
num = UBound(arrSplitStrings)
getFileName = arrSplitStrings(num)
End Function
思路分析:针对文件路径,使用Split函数,基于斜杆/
,将路径分割成各个小块,保存在一个数组内;然后通过Ubound函数,获取数组的最后一个索引号,从而将文件名提取出来。
参考资料:
[1] 如何用excel提取路径中最后一个文件夹的名字(https://jingyan.baidu.com/article/a948d651aae9544a2ccd2e74.html)
[2] 字符串-如何从路径提取文件名(https://www.itranslater.com/qa/details/2582413335018865664)
[3] REPT 函数(https://support.microsoft.com/zh-cn/office/rept-%E5%87%BD%E6%95%B0-04c4d778-e712-43b4-9c15-d656582bb061)
[4] Right 函数(https://support.microsoft.com/zh-cn/office/right-%E5%87%BD%E6%95%B0-c02a18a8-b224-437e-aaba-1b785c6c61bf)
[5] Split function(https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/split-function)
[6] UBound function(https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/ubound-function)