String VBA将字符串从文件目录拆分为子字符串

String VBA将字符串从文件目录拆分为子字符串,string,ms-access,vba,String,Ms Access,Vba,我已经搜索了很多这个话题,但还没有找到我的确切问题。而且我似乎不知道如何调整代码样本以供我使用 我正在尝试将“文件目录字符串”从右向左拆分为子字符串 "C:\Users\Me\CustomerName\ProductName\2017\" 从右到左,再到右 year productname customername 我尝试使用Split()使其工作时,总是将其拆分到错误的位置。您提到您已尝试使用Split,因此这是一个好的开始: Option Explicit Public Sub Tes

我已经搜索了很多这个话题,但还没有找到我的确切问题。而且我似乎不知道如何调整代码样本以供我使用

我正在尝试将“文件目录字符串”从右向左拆分为子字符串

"C:\Users\Me\CustomerName\ProductName\2017\"
从右到左,再到右

year
productname
customername

我尝试使用Split()使其工作时,总是将其拆分到错误的位置。

您提到您已尝试使用
Split
,因此这是一个好的开始:

Option Explicit

Public Sub TestMe()

    Dim strFolderString As String
    Dim arrFolderString As Variant

    strFolderString = "C:\Users\Me\CustomerName\ProductName\2017\"
    arrFolderString = Split(strFolderString, "\")

    Debug.Print arrFolderString(UBound(arrFolderString) - 1)
    Debug.Print arrFolderString(UBound(arrFolderString) - 2)
    Debug.Print arrFolderString(UBound(arrFolderString) - 3)

End Sub

其思想是使用
UBound
作为从右到左的顺序。我不是从0开始的,因为您的字符串以
\
结尾,因此第0个位置为空。

您提到您已尝试使用
拆分
,因此这是一个很好的开始:

Option Explicit

Public Sub TestMe()

    Dim strFolderString As String
    Dim arrFolderString As Variant

    strFolderString = "C:\Users\Me\CustomerName\ProductName\2017\"
    arrFolderString = Split(strFolderString, "\")

    Debug.Print arrFolderString(UBound(arrFolderString) - 1)
    Debug.Print arrFolderString(UBound(arrFolderString) - 2)
    Debug.Print arrFolderString(UBound(arrFolderString) - 3)

End Sub

其思想是使用
UBound
作为从右到左的顺序。我不是从0开始的,因为您的字符串以
\
结尾,所以第0位是空的。

用您迄今为止尝试过的代码更新您的问题,以及不需要的行为/输出的示例(“…在错误的位置拆分”)。另外:您确定
=
部分吗?用您迄今为止尝试过的代码更新您的问题,还有一些不需要的行为/输出的例子(“…在错误的地方分割。”)还有:你们确定
==
部分吗?嗨,谢谢你们的帮助。您的
Debug.Print arrFolderString(UBound(arrFolderString)-1)
Debug.Print arrFolderString(UBound(arrFolderString)-2)
Debug.Print arrFolderString(UBound(arrFolderString)-3)
输出错误的子字符串,尽管它们都向左移动了一个太远。我已将其更改为
Debug.Print arrFolderString(UBound(arrFolderString)-0)Debug.Print arrFolderString(UBound(arrFolderString)-1)Debug.Print arrFolderString(UBound(arrFolderString)-2)
,现在它完全按照需要工作。再次感谢!编辑:很抱歉格式化,我是新手SO@DMS-您的字符串以“\`”结尾,这就是我这样使用它的原因。试试上面的代码。啊,现在我明白了。显然,我真正代码的字符串最后没有\。现在工作完美,谢谢你的帮助:)嗨,谢谢你的工作。您的
Debug.Print arrFolderString(UBound(arrFolderString)-1)
Debug.Print arrFolderString(UBound(arrFolderString)-2)
Debug.Print arrFolderString(UBound(arrFolderString)-3)
输出错误的子字符串,尽管它们都向左移动了一个太远。我已将其更改为
Debug.Print arrFolderString(UBound(arrFolderString)-0)Debug.Print arrFolderString(UBound(arrFolderString)-1)Debug.Print arrFolderString(UBound(arrFolderString)-2)
,现在它完全按照需要工作。再次感谢!编辑:很抱歉格式化,我是新手SO@DMS-您的字符串以“\`”结尾,这就是我这样使用它的原因。试试上面的代码。啊,现在我明白了。显然,我真正代码的字符串最后没有\。现在工作完美无瑕,谢谢你的帮助:)