如何在Access VBA中一起使用InStrRev和Split函数在最后一次出现字符之前拆分字符串?

时间:2016-06-16 12:09:26

标签: string vba

我试图找到字符串中最后一次出现的“\”(它是一个文件路径)并拆分字符串以包含所有内容,包括“\”,因此只留下文件名。例如,我的路径为“C:\ Users \ exampleUser \ examplefile.txt”,我希望它只返回“C:\ Users \ exampleUser \”。我已经找到了在其他语言上做到这一点的方法,但不是VBA。

编辑:我不希望这种方式硬编码。我正在使用文件系统对象循环遍历所有子文件夹并对给定名称和路径的特定文件执行某些命令,所以我不知道循环的每次迭代都会有什么文件路径。

3 个答案:

答案 0 :(得分:1)

此外,您可以尝试LeftInStrRev

Function GetDirectoryName(ByVal strFile As String, ByVal strDelimiter As String) As String
    GetDirectoryName = Left(strFile, InStrRev(strFile, "\", -1))
End Function

答案 1 :(得分:1)

如果您已使用FileSystemObject,最简单的方法是使用内置的GetParentFolderName方法执行此操作:

Private Sub Example()

    Dim fso As Scripting.FileSystemObject
    Dim path As String

    Set fso = New Scripting.FileSystemObject
    path = fso.GetParentFolderName("C:\Users\exampleUser\examplefile.txt")
    Debug.Print path

End Sub

答案 2 :(得分:0)

使用INSTRREVMIDRIGHT执行此操作。 InStrRev("c:\testpath\testfile.txt","\")Split(strInput, "\")(UBound(Split(strInput, "\")))