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

原创 2007年09月23日 14:31:00

方法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

[小技巧] 如何获取svn 的 URL 信息

使用如下命令: $ svn info 或是: $ cat
  • robertsong2004
  • robertsong2004
  • 2014年09月17日 12:18
  • 18321

VBA获取某文件夹下所有文件和子文件目录的文件

VBA获取某文件夹下所有文件,或子文件目录的文件 '------------------------------------------- '获取某文件夹下的所有Excel文件 '-------...
  • pashine
  • pashine
  • 2014年12月23日 11:11
  • 25661

VBA遍历当前目录下指定类型的excel文件并复制文件内指定的内容到新表中

最近在做水质分析数据录入的时候,需要根据监测井编号到多个excel表中查询该编号对应的井的水质分析数据,并将单口井的水质分析数据复制到新表中。由于检测中心给的 水质分析数据很多,而且还分布在不同的工...
  • weixin_38263568
  • weixin_38263568
  • 2017年06月22日 17:07
  • 923

word vba遍历文件,打开另外word修改保存

处理完数个word,回头一看,才发现前面代码把一个符号搞反了。。。 把大于等于与小于等于两符号,颠倒了位置。。。晕。 马上用vba处理一下。 把这些word放在D盘根目录。逐个遍历并打开,逐一...
  • dzweather
  • dzweather
  • 2015年10月24日 17:29
  • 3847

VBA获取系统环境变量及特殊文件夹的各种代码与方法

 这几天帮客户做个系统,需要获到系统环境变量及一些特殊文件夹。收集和研究了各种代码。记录一下,以免自己忘记,同时也分享一下给大家,避免大家遇到同样问题时,再去花费大量时间。 一、我个人整理...
  • amesman
  • amesman
  • 2016年07月07日 08:30
  • 502

Excel VBA开发中数字签名的管理

Excel 禁用无数字签署的宏网上下载的Excel文件可能含有宏病毒,因此打开Excel文件时最好不要轻易启动宏,同时为了不让“启动宏”的提示每次出现,可以在Excel设置中提高安全程度: 【文件】...
  • WhoisPo
  • WhoisPo
  • 2015年09月21日 14:59
  • 1903

【VBA研究】用VBA取得EXCEL有效行列数方法比较

作者:iamlaosong 我常用下面方式取得有效行数: maxrow=sheets(1).[A65536].End(xlUp).Row 实际使用中发现这种方法存在2个问题: 1、高低版本不兼容,20...
  • iamlaosong
  • iamlaosong
  • 2014年05月13日 09:46
  • 20204

Word VBA教程:Close方法

应用于 Document 和 Documents对象的 Close方法。 关闭指定的一个或多个文档。 expression.Close(SaveChanges, OriginalFormat, R...
  • dhdhxgx
  • dhdhxgx
  • 2015年05月08日 14:03
  • 1473

【获取内置命令ID】:VBA编程人员常用的工具。可以查询Excel内部命令的ID号

菜单名称 子菜单名称 菜单ID 菜单INDEX 图标ID 类别 Worksheet Menu Bar(INDEX:1) 文件(&F) 30002 1   CommandB...
  • allisonhuang
  • allisonhuang
  • 2013年04月11日 13:22
  • 2178

VBA中Dictionary对象使用小结

转载▼ 标签:  杂谈 分类: EXCELVBA VBA中Dictionary对象使用小结 2005-11-15 VBA中Dic...
  • kaifeng2988
  • kaifeng2988
  • 2015年12月19日 00:52
  • 521
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在VBA中获取“我的文档”的目录路径
举报原因:
原因补充:

(最多只允许输入30个字)