VBA如何获取当前用户应用数据文件夹的路径?

22

一般来说,

使用VBA,我该如何确定当前用户的应用程序数据文件夹的位置?

FileSystemObject只知道三个特殊文件夹:

  • WindowsFolder(Windows文件夹)
  • SystemFolder(系统文件夹)
  • TemporaryFolder(临时文件夹)

具体而言,我需要一个Word宏将文件复制到应用程序数据文件夹下的一个文件夹中。

例如,在VB.Net中,我可以使用My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData来实现此操作。

3个回答

39
您可以使用 Environ("AppData") 来获取此路径。 Environ 可以提取任何系统变量,可以使用 DOS 命令提示符中的 set 命令查找它们。

我从未想过要检查环境字符串,这个方法很有效,谢谢 :) - Binary Worrier
2
我认为使用Environ()方法是不可靠的,因为环境变量可能会被用户更改,从而导致意外结果。使用Windows API可能更好。以下是查找“文档/我的文档”文件夹的示例:http://dailydoseofexcel.com/archives/2009/02/26/get-the-path-to-my-documents-in-vba/#comment-38211 如果您能找到一种方法来查找AppData文件夹,那可能是更好的方式。 - authentictech

17

通过使用 advapi32.dll,可以获取 USERPROFILE

Environ("USERPROFILE")

将其与“应用程序数据”目录(具有标准特定名称)连接起来,即可获得所需内容。

CStr(Environ("USERPROFILE") & "\Application Data")

欲了解更多信息,请查看MSDN


2
与使用CStr()将变量转换为字符串的方法相比,另一种方法是在运行时之前显式地请求字符串数据类型,即使用其类型字符$ - Environ$() - K.Dᴀᴠɪs

0
只需使用此功能返回已登录的特定用户的名称。
MsgBox Left(Replace(Environ("APPDATA"), Left(Environ("APPDATA"), InStr(1, Environ("APPDATA"), "Users") + 5), ""), InStr(1, Replace(Environ("APPDATA"), Left(Environ("APPDATA"), InStr(1, Environ("APPDATA"), "Users") + 5), ""), "\") - 1), vbOKOnly


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接