Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA:如何获取使用新的自动保存功能的工作簿的本地文件路径(因此从技术上讲是从OneDrive打开的)?_Vba_Excel - Fatal编程技术网

VBA:如何获取使用新的自动保存功能的工作簿的本地文件路径(因此从技术上讲是从OneDrive打开的)?

VBA:如何获取使用新的自动保存功能的工作簿的本地文件路径(因此从技术上讲是从OneDrive打开的)?,vba,excel,Vba,Excel,我有一个工作簿,它可以进行一些分析,并将结果输出到保存工作簿时所在目录下的文本文件中。我需要在多台计算机上运行此代码,以便本地目录更改。以前我只是用 Application.ActiveWorkbook.Path 但是,由于启用了自动保存功能(这很有用,因此我想继续使用),这将返回OneDrive中的远程文件路径 如何获取本地文件路径?我认为您需要的是一个环境函数: 您可以这样设置“路径”: MyPath = Environ("LocalAppData") 这将返回: C:\Users\us

我有一个工作簿,它可以进行一些分析,并将结果输出到保存工作簿时所在目录下的文本文件中。我需要在多台计算机上运行此代码,以便本地目录更改。以前我只是用

Application.ActiveWorkbook.Path
但是,由于启用了自动保存功能(这很有用,因此我想继续使用),这将返回OneDrive中的远程文件路径


如何获取本地文件路径?

我认为您需要的是一个
环境
函数:

您可以这样设置“路径”:

MyPath = Environ("LocalAppData")
这将返回:

C:\Users\username\AppData\Local
C:\Users\Public

这将返回:

C:\Users\username\AppData\Local
C:\Users\Public
有更多选项可供选择(
AppData
AllUsersProfile
等)


希望这有帮助

我使用FileSystemObject解决了这个问题

Dim fso as FileSystemObject, localPath as String
localPath = fso.GetParentFolderName(fso.GetAbsolutePathName(Application.ActiveWorkbook.Name))

已尝试?在文件打开且代码运行之前,可能会更改CurDir?假设文件是从本地驱动器打开的,请使用workbook.open事件将curdir写入全局变量抱歉,返回此文件时出现延迟-已离开。我尝试了CurDir,这对我的使用效果很好,因为我在执行时立即设置了输出文件路径。如果您将其作为答案发布,我会将其标记为正确。我说得太快,这会根据运行工作簿的计算机的不同而有所变化。但是,有没有办法从中获取工作簿的保存目录?理想情况下,结果需要保存在OneDrive中,以便与我的开发计算机同步。@whitebloodcell我想我遗漏了什么。在您最初的问题中,您是说
Application.ActiveWorkbook.Path
返回OneDrive的路径,而在后续问题中,您是说“理想情况下,结果需要保存在OneDrive中”……对不起,“返回OneDrive的路径”是指返回远程OneDrive地址,它保存在我的计算机上,而不是本地文件夹。当我在“结果理想情况下需要保存在OneDrive中”中提到OneDrive时,我指的是我计算机上的本地OneDrive文件夹(C:\Users\tomcl\OneDrive\Documents\Trading)。我会尝试这样做:
OnePath=Environment(“UserProfile”)&“\OneDrive\Documents\Trading”
。此环境函数将返回本地用户名。因此,在您的情况下,如果您将
Debug.Print OnePath
,您的结果将是
C:\Users\tomcl\OneDrive\Documents\Trading
,但在其他机器上,结果将是
C:\Users\OtherUserName\OneDrive\Documents\Trading