ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何运用VBA获取“字体”文件夹所在路径呢?

如何运用VBA获取“字体”文件夹所在路径呢?

作者:绿色风 分类: 时间:2022-08-17 浏览:90
楼主
0Mouse
Q:如何运用VBA获取“字体”文件夹所在路径呢?
A:可以采用以下4种方法获取。
方法1:WSH 引用
在VBE窗口依次单击“工具”-“引用”,勾选“Microsoft Shell Controls And Automation”项,单击“确定”按钮。
  1. Sub xqoa1()
  2.     Dim oShell As New Shell
  3.     On Error Resume Next
  4.     MsgBox oShell.Namespace(20).Self.Path    '20对应于&H14&
  5. End Sub
方法2:WSH 后期绑定
  1. Sub xqoa2()
  2.     Dim WSH As Object
  3.     Set WSH = CreateObject("Wscript.Shell")
  4.     MsgBox WSH.SpecialFolders("Fonts")
  5.     Set WSH = Nothing
  6. End Sub
方法3:Api函数
  1. Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" _
  2.     (ByVal hwndOwner As Long, ByVal nFolder As Integer, pidl As Long) As Long
  3. Private Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" _
  4.     (ByVal pidl As Long, ByVal szPath As String) As Long

  5. Private Const ONTSCSIDL_F = &H14&
  6. Private Const MAX_PATH = 260

  7. Sub xqoa3()
  8.     Dim pidl&, S$
  9.     SHGetSpecialFolderLocation 0, ONTSCSIDL_F, pidl
  10.     S = String(MAX_PATH, Chr(0))
  11.     SHGetPathFromIDList pidl, S
  12.     MsgBox Left(S, InStr(S, Chr(0)) - 1)
  13. End Sub
方法4:Api函数
  1. Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" _
  2.     (ByVal hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  3. Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _
  4.     (ByVal hkey As Long, _
  5.      ByVal lpValueName As String, _
  6.      ByVal lpReserved As Long, _
  7.      lpType As Long, _
  8.      lpData As Any, _
  9.      lpcbData As Long) As Long
  10. Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long

  11. Private Const HKEY_CURRENT_USER = &H80000001

  12. Sub xqoa4()
  13.     Dim hkey&, rst&, lenData&, typeData&, S$
  14.     rst = RegOpenKey(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", hkey)
  15.     If rst = 0 Then
  16.         rst = RegQueryValueEx(hkey, "Fonts", 0, typeData, ByVal vbNullString, lenData)
  17.         If rst = 0 Then
  18.             S = String(lenData, Chr(0))
  19.             RegQueryValueEx hkey, "Fonts", 0, typeData, ByVal S, lenData
  20.             MsgBox Left(S, InStr(S, Chr(0)) - 1)
  21.         End If
  22.         RegCloseKey hkey
  23.     End If
  24. End Sub
附件:
运用VBA获取“字体”文件夹所在路径.rar
2楼
亡者天下
过来学习一下
3楼
水星钓鱼
感谢分享
4楼
芐雨
过来学习一下
5楼
老糊涂
学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap