我正在使用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()已经改为最后选择的目录.
根据您的需求,您有多种选择.
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)
小智 5
您的代码: path = ActiveWorkbook.Path
返回空白,因为您还没有保存您的工作簿。
要解决您的问题,请返回 Excel 工作表,保存您的工作表,然后再次运行您的代码。
这次它不会显示为空白,而是会显示它所在的路径(当前文件夹)
我希望这有帮助。