我遇到了一个问题,我需要从路径中删除文件名,但却无法弄清楚代码。
示例文件名为C:\ Checked out parts \ 001-1099-01.slddrw。我需要提取" 001-1099-01。"一部分。左边的文件位置可以是任何内容,文件名中唯一的常量是" 001 - "部分(我应该指出,如果文件名是001-1001-03可以重复)和" .slddrw"。除此之外,文件名可以命名为" 001-10999-03-02-01"。
我已经轻易地删除了slddrw部分,我尝试使用Right和InStr函数去除其余部分,但我认为InStr只适用于字母(无论如何都找不到任何数字示例)
答案 0 :(得分:0)
我相信这就是你要找的东西:
Public Sub test()
Dim strFileName As String
'Your sample file name
strFileName = "C:\Checked out parts\001-1099-01.slddrw"
'Search for the first occurance of \ in the reversed (!) file name
' if you substract this result from the length of the string
' you know where to start (+ 2 to avoid the \ itself)
strFileName = Mid(strFileName, Len(strFileName) - InStr(1, StrReverse(strFileName), "\") + 2)
'Remove the .slddrw portion from the end
strFileName = Replace(strFileName, ".slddrw", "")
'Done
Debug.Print strFileName
End Sub
请注意代码中的注释以获取更多信息。
答案 1 :(得分:0)
您可以使用一个sub来定义文件的路径和扩展名,它会为您提供文件名。
Function getFileName(cel As Range, path As String, extension As String)
Dim myString() As String
myString = Split(cel, path)
getFileName = Split(myString(1), extension)(0)
End Function
您也可以将其作为一项功能:
Function getFileName2(cel As Range, path As Range, extension As Range)
Dim myString() As String
myString = Split(cel, path)
getFileName2 = Split(myString(1), extension)(0)
End Function
如果您在单元格中存储了路径和扩展名,则可以使用此功能:
myString = Split(Range("A1"), "\")
fileName = Split(myString(UBound(myString)), ".")(0)
这些是我能想到的选择,希望它有所帮助。
编辑:
如果您不知道路径或扩展名,则可以使用此代码:
{{1}}