我需要从绝对路径转到相对路径。
我的宏位于文件夹 \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)
返回一个目录,然后进入宏映射的最佳方法是什么?
您可以按照通常的方式构造相对路径,但您始终需要将它们附加到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)