从路径中提取文件名

Mat*_*les 12 vba wildcard

我需要从路径(字符串)中提取文件名:

例如, "C:\ folder\folder\folder\file.txt"="file"(甚至"file.txt"让我开始)

基本上所有的一切,包括最后一个\

我听说使用通配符代替Regex(因为它在VBA中是一个奇怪的实现?)但是找不到任何可靠的东西.

提前干杯.

kav*_*man 21

我相信这是有效的,使用VBA:

Dim strPath As String
strPath = "C:\folder\folder\folder\file.txt"

Dim strFile As String
strFile = Right(strPath, Len(strPath) - InStrRev(strPath, "\"))
Run Code Online (Sandbox Code Playgroud)

InStrRev从末尾查找"\"的第一个实例,并返回位置.给定长度的右边Right开始生成子串,因此您可以使用计算所需的长度Len - InStrRev


Mat*_*les 6

感谢kaveman的帮助.这是我用来删除路径和扩展名的完整代码(它不是完全证明,不考虑包含超过2位小数的文件,例如.*.tar.gz)

sFullPath = "C:\dir\dir\dir\file.txt"   
sFullFilename = Right(sFullPath, Len(sFullPath) - InStrRev(sFullPath, "\"))
sFilename = Left(sFullFilename, (InStr(sFullFilename, ".") - 1))
Run Code Online (Sandbox Code Playgroud)

sFilename ="file"


liv*_*ove 5

我一直在寻找没有代码的解决方案.此VBA适用于Excel公式栏:

要提取文件名:

=RIGHT(A1,LEN(A1)-FIND("~",SUBSTITUTE(A1,"\","~",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))
Run Code Online (Sandbox Code Playgroud)

要提取文件路径:

=MID(A1,1,LEN(A1)-LEN(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))))
Run Code Online (Sandbox Code Playgroud)