在VBA中获取“我的文档”的目录路径

本文介绍了五种获取“我的文档”文件夹路径的方法,包括直接读取注册表、利用WSCRIPT对象模型的SPECIALFOLDERS属性、使用Shell对象、通过默认路径字符串以及再次利用WSCRIPT对象模型读取注册表。

方法1. 读取注册表:

Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Declare Function RegQueryValueExString Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
Declare Function RegQueryValueExNULL Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As Long, lpcbData As Long) As Long
Global Const HKEY_CURRENT_USER = &H80000001
Global Const KEY_ALL_ACCESS = &H3F
Sub test()
Dim hKey As Long
Dim resultvl As String
lretval = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", 0, KEY_ALL_ACCESS, hKey)
If lretval = 0 Then
regop = RegQueryValueExNULL(hKey, "Personal", 0&, lType, 0&, lpcbData)
resultvl = String(lpcbData, 0)
regop = RegQueryValueExString(hKey, "Personal", 0&, lType, resultvl, lpcbData)
If regop = ERROR_NONE Then
vValue = Left$(resultvl, lpcbData)
Else
vValue = Empty
End If
Else
vValue = Empty
End If
MsgBox vValue
End Sub

方法2. 用WSCRIPT对象模型的SPECIALFOLDERS属性

Sub test()

Set WSh = CreateObject("WScript.Shell")
strdoc = WSh.SpecialFolders("Mydocuments")
MsgBox strdoc '这一句要不要都可以,已经在STRDOC中最得字串了
End Sub

方法3. 使用shell对象.

Sub macro1()
MsgBox CreateObject("shell.Application").Namespace(5).self.Path
End Sub

方法4.

如果没有更改过我的文档路径,可以这样:

Sub macro1()
MsgBox Environ("USERPROFILE") & "\My Documents"

End Sub

方法5 使用WSCRIPT对象模型读取注册表

Sub getit()
MsgBox CreateObject("Wscript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal")
End Sub

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值