需要从文件名字符串中删除数字以更改保存位置

时间:2016-04-11 18:41:25

标签: vba

我遇到了一个问题,我需要从路径中删除文件名,但却无法弄清楚代码。

示例文件名为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只适用于字母(无论如何都找不到任何数字示例)

2 个答案:

答案 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}}