相对路径VBA

Ken*_*Ken 3 excel vba

我需要从绝对路径转到相对路径。

我的宏位于文件夹 \models\vba 中

该宏使用文件夹 \models\Main 和 \models\aear 中的工作表,如下所示

 Set Main = Workbooks.Open("D:\Shared\Models\Main\Main 2017.xlsx")
Run Code Online (Sandbox Code Playgroud)

我已经到处逛逛了,这似乎是最容易使用的

ThisWorkbook.Path
Run Code Online (Sandbox Code Playgroud)

返回一个目录,然后进入宏映射的最佳方法是什么?

A.S*_*S.H 7

您可以按照通常的方式构造相对路径,但您始终需要将它们附加到ThisWorkbook.Path.

Set Main = Workbooks.Open(ThisWorkbook.Path & "\..\Main\Main 2017.xlsx")
Run Code Online (Sandbox Code Playgroud)

每个..在文件夹树中都会向上一级。

您最终可以通过构建自己的函数来封装它,该函数从相对路径构造绝对路径

Function RelToAbs(RelPath as string) as string
    RelToAbs = ThisWorkbook.Path & "\" & RelPath
End function

Set Main = Workbooks.Open(RelToAbs("..\Main\Main 2017.xlsx"))
Run Code Online (Sandbox Code Playgroud)

  • @Ken:如果 ThisWorkbook.Path 是 `D:\Shared\Models\vba`,则 `ThisWorkbook.Path & "\.."` 是 `D:\Shared\Models`... 和 `ThisWorkbook.Path & "\ ..\Main` 是 `D:\Shared\Models\Main` (2认同)