|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
一、写入注册表的路径
VBA允许读写下列注册表路径中的注册表设置:
\HKEY_CURRENT_USER\Software\VB and VBA Program Settings\{子键}
二、使用的命令
1、SaveSetting(AppName,Section,Key,Setting),用于设置注册表值
参数:(1)参数AppName必需,String类型,指定VB and VBA Program Settings键的子键;
(2)参数Section必需,String类型,在参数AppName中指定的键的子键;
(3)参数Key必需,String类型,在参数Section中指定的键的值;
(4)参数Setting必需,String类型或数值型,存储在参数Key指定的值中的一块数据。
说明:(1)参数Section可以是一个嵌套子键的路径,每个子键与其父键之间使用反斜杠隔开。例如,如果参数 Section的值为Settings\Coordinates,则表明从HKEY_CURRENT_USER\Software\VB and VBA Program Settings\[AppName]\Settings\Coordinates中检索值。
(2)SaveSetting函数不允许改变注册表项的缺省值,否则会产生运行时错误。
2、GetSetting(AppName,Section,Key[,Default]),读取注册表项设置及其相应值
参数:(1)参数AppName必需,String类型,指定VB and VBA Program Settings键的子键;
(2)参数Section必需,String类型,在参数AppName中指定的键的子键;
(3)参数Key必需,String类型,在参数Section中指定的键的值;
(4)参数default可选,String类型,指定当参数Key中没有设置值时返回的数据。
说明:(1)如果忽略GetSetting函数中的参数Default,则认为是一个零长字符串("")。
3、GetAllSettings(appname, section),读取应用程序项目的所有注册表项设置及其相应值
参数:(1)参数AppName必需,String类型,指定VB and VBA Program Settings键的子键;
(2)参数Section必需,String类型,在参数AppName中指定的键的子键。
注意:(1)GetAllSettings 返回 Variant,其内容为字符串的二维数组,该二维数组包含指定区域中的所有注册表项设置及其对应值;
(2)如果 appname 或 section 不存在,则 GetAllSettings 返回未初始化的 Variant。
4、DeleteSetting(AppName[,Section[,Key]]), 删除子键或值
参数:(1)参数AppName必需,String类型,指定VB and VBA Program Settings键的子键;
(2)参数Section必需,String类型,在参数AppName中指定的键的子键;
(3)参数Key必需,String类型,在参数Section中指定的键的值。
注意:(1)DeleteSetting(AppName),直接删除了子键;
(2)DeleteSetting(AppName, Section ),删除了 指定的键的子键;
(3)DeleteSetting(AppName,Section,Key), 删除了 指定的键的子键的值;
(4)不能使用DeleteSetting函数从注册表的主键里删除那些不是HKEY_CURRENT_USER\Software\VB and VBA Program Settings的子键的项;
(5)如果提供了参数Key,那么只有名为Key的项及其关联的值被删除;如果忽略了参数Key,那么参数Section指定的子键将被删除;如果忽略了参数Section,那么参数AppName的键将被全部删除;
(6)DeleteSetting函数不能删除属于任何键的缺省值。
三、举例
1、举例1
Sub TestRegistryFunctions()
'创建带有两个值的子键
SaveSetting AppName:="MyApp", Section:="MySection", Key:="MyKey", Setting:="MySetting"
SaveSetting AppName:="MyApp", Section:="MySection", Key:="MyKey2", Setting:="MySetting2"
'显示"MySetting"和"MySetting2"
MsgBox Prompt:=GetSetting(AppName:="MyApp", Section:="MySection", Key:="MyKey")
MsgBox Prompt:=GetSetting(AppName:="MyApp", Section:="MySection", Key:="MyKey2")
'删除子键
DeleteSetting AppName:="MyApp"
'显示空字符串
MsgBox Prompt:=GetSetting(AppName:="MyApp", Section:="MySection", Key:="MyKey")
MsgBox Prompt:=GetSetting(AppName:="MyApp", Section:="MySection", Key:="MyKey2")
End Sub
2、举例2
Sub ExperimentWithRegistry()
Dim vaKeys As Variant
'创建新的注册表项
SaveSetting "XLTest", "General", "App_Name", "XLTest"
SaveSetting "XLTest", "General", "App_Version", "1.0.0"
SaveSetting "XLTest", "General", "App_Date", "10/11/2003"
PrintRegistrySettings
'更新设置
SaveSetting "XLTest", "General", "App_Version", "1.0.1"
PrintRegistrySettings
'获取所有的设置
vaKeys = GetAllSettings("XLTest", "General")
PrintAllSettings vaKeys
'删除设置
DeleteSetting "XLTest", "General", "App_Name"
DeleteSetting "XLTest", "General", "App_Version"
DeleteSetting "XLTest", "General", "App_Date"
PrintRegistrySettings
End Sub
Sub PrintRegistrySettings()
On Error Resume Next
Debug.Print "应用程序名:" & GetSetting("XLTest", "General", "App_Name")
Debug.Print "应用程序版本:" & GetSetting("XLTest", "General", "App_Version")
Debug.Print "应用程序日期:" & GetSetting("XLTest", "General", "App_Date")
Debug.Print "------------------------------"
End Sub
Sub PrintAllSettings(vaSettings As Variant)
Dim nItem As Integer
If IsArray(vaSettings) Then
For nItem = 0 To UBound(vaSettings)
Debug.Print vaSettings(nItem, 0) & ": " & vaSettings(nItem, 1)
Next
End If
Debug.Print "------------------------------"
End Sub
|
|