提取正确路径的规则

时间:2018-02-13 18:01:42

标签: excel-vba vba excel

我需要一些帮助来修复我已写过的代码。

Perc1 = ThisWorkbook.Path
Slash1 = InStrRev(Perc1, "\")
PercF = Left(Perc1, Slash1 - 1)
Slash2 = InStrRev(PercF, "\")
PercFinale = Left(PercF, Slash2) & "04-OFFERTE_CONTRATTO" & "\"

值是:

: Perc1 : "E:\DENNIS\01_Progetti\1_TRATTATIVE\IT.18.9462_O. Aeroporto (ROMA)\03-CALCOLO\02-XLS\Edificio E1" : Variant/String
: Slash1 : 102 : Variant/Long
: PercF : "E:\DENNIS\01_Progetti\1_TRATTATIVE\IT.18.9462_O. Aeroporto (ROMA)\03-CALCOLO\02-XLS" : Variant/String
: Slash2 : 95 : Variant/Long
: PercFinale : "E:\DENNIS\01_Progetti\1_TRATTATIVE\IT.18.9462_O. Aeroporto (ROMA)\03-CALCOLO\04-OFFERTE_CONTRATTO\" : String

这样会以错误结束,因为03-CALCOLO和04-OFFERTE_CONTRATTO位于同一文件夹中。

我希望Percf总是在" ... \ 03-CALCOLO"之后结束。即使我在02-XLS中有子文件夹(如本例所示)。

请你给我一个建议吗?

非常感谢!

丹尼斯

1 个答案:

答案 0 :(得分:1)

您可以定义一个函数,例如:

Function GetRootPath(ByVal strPth As String, ByVal strTkn As String) As String
    Dim rtn As String, itm
    For Each itm In Split(strPth, "\")
        If UCase(itm) = UCase(strTkn) Then Exit For Else rtn = rtn & itm & "\"
    Next itm
    GetRootPath = rtn
End Function

然后使用以下方法构建路径:

PercFinale = GetRootPath(ThisWorkbook.Path, "03-CALCOLO") & "04-OFFERTE_CONTRATTO\"