📜  excel vba 提取文件名 - VBA (1)

📅  最后修改于: 2023-12-03 15:30:39.867000             🧑  作者: Mango

Excel VBA 提取文件名 - VBA

在 Excel VBA 中,我们可能会遇到需要从文件路径中提取文件名的情况。这时,我们可以使用 VBA 的内置函数 InStrRevRight 来实现。

获取文件路径

首先,我们需要获取文件的完整路径。可以使用 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 中提取文件名有所帮助!