如何使用vba获取当前工作目录?

Ull*_*lan 54 excel vba

我正在使用MS Excel 2010并尝试使用以下代码获取当前目录,

    path = ActiveWorkbook.Path
Run Code Online (Sandbox Code Playgroud)

但ActiveWorkbook.Path返回空白.

jac*_*ouh 89

我测试了这个:

当我打开Excel文档时D:\db\tmp\test1.xlsm:

  • CurDir() 回报 C:\Users\[username]\Documents

  • ActiveWorkbook.Path 回报 D:\db\tmp

因此CurDir()具有系统默认值并且可以更改.

ActiveWorkbook.Path 对于同一保存的工作簿,不会更改.

例如,CurDir()在执行"文件/另存为"命令时进行更改,并在"文件/目录选择"对话框中选择一个随机目录.然后单击"取消"以跳过保存.但是CurDir()已经改为最后选择的目录.

  • 对于使用MS Access的开发人员:`Application.CurrentProject.Path` (4认同)

And*_*ASM 9

根据您的需求,您有多种选择. Workbook.Path返回已保存工作簿的路径.Application.Path返回Excel可执行文件的路径.CurDir返回当前工作路径,这可能默认为"我的文档"文件夹或类似文件夹.

您还可以使用Windows脚本shell对象的.CurrentDirectory属性.

Set wshell = CreateObject("WScript.Shell")
Debug.Print wshell.CurrentDirectory
Run Code Online (Sandbox Code Playgroud)

但这应该得到与公正相同的结果

Debug.Print CurDir
Run Code Online (Sandbox Code Playgroud)


Mon*_*ild 7

似乎ActiveWorkbook可能尚未保存......

试试吧CurDir().


小智 5

您的代码: path = ActiveWorkbook.Path

返回空白,因为您还没有保存您的工作簿。

要解决您的问题,请返回 Excel 工作表,保存您的工作表,然后再次运行您的代码。

这次它不会显示为空白,而是会显示它所在的路径(当前文件夹)

我希望这有帮助。