📅  最后修改于: 2023-12-03 15:30:39.867000             🧑  作者: Mango
在 Excel VBA 中,我们可能会遇到需要从文件路径中提取文件名的情况。这时,我们可以使用 VBA 的内置函数 InStrRev
和 Right
来实现。
首先,我们需要获取文件的完整路径。可以使用 Application.GetOpenFilename
函数弹出文件选择对话框获取文件路径,或者使用 ActiveWorkbook.FullName
获取当前工作簿的完整路径。以下是代码示例:
' 弹出文件选择对话框
Dim filePath As Variant
filePath = Application.GetOpenFilename
If filePath <> False Then ' 用户选择了文件
' 处理文件
End If
' 获取当前工作簿的完整路径
Dim fullPath As String
fullPath = ActiveWorkbook.FullName
接下来,我们使用 InStrRev
函数查找文件路径中最后一个反斜杠的位置,然后使用 Right
函数截取文件名部分。以下是代码示例:
' 从文件路径中提取文件名
Dim fileName As String
Dim lastBackslash As Long
lastBackslash = InStrRev(fullPath, "\")
If lastBackslash > 0 Then
fileName = Right(fullPath, Len(fullPath) - lastBackslash)
Else
fileName = fullPath
End If
上述代码首先使用 InStrRev
函数查找最后一个反斜杠的位置,并将其保存在变量 lastBackslash
中。如果找到了反斜杠,则使用 Right
函数截取从反斜杠位置到字符串结尾的部分作为文件名,否则将整个字符串作为文件名。
须注意,如果路径不是以反斜杠结尾,则 fileName
变量中将包含路径中最后一个反斜杠后的字符。如果需要去掉该字符,可以在 Right
函数中减去 1
。
完整的提取文件名的代码如下:
Sub ExtractFileName()
' 获取当前工作簿的完整路径
Dim fullPath As String
fullPath = ActiveWorkbook.FullName
' 从文件路径中提取文件名
Dim fileName As String
Dim lastBackslash As Long
lastBackslash = InStrRev(fullPath, "\")
If lastBackslash > 0 Then
fileName = Right(fullPath, Len(fullPath) - lastBackslash)
Else
fileName = fullPath
End If
' 输出文件名
MsgBox "文件名为:" & fileName
End Sub
以上代码可以在 VBA 中直接运行,在弹出的提示框中显示当前工作簿的文件名。
希望本文对你在 Excel VBA 中提取文件名有所帮助!