可以使用注册表来存储应用程序的初始和配置的设置。VBA允许读写下列注册表路径中的注册表设置:
\HKEY_CURRENT_USER\Software\VB and VBA Program Settings\{子键}
要在这个注册表路径中读取注册表设置,使用GetSetting函数。要写入注册表设置到该注册表路径中,使用SaveSetting函数。注意,不正确地修改注册表会导致严重的后果,甚至需要重新安装操作系统。
GetSetting函数和SaveSetting函数的语法如下:
SaveSetting(AppName,Section,Key,Setting)
GetSetting(AppName,Section,Key[,Default])
其中:
使用DeleteSetting函数删除子键或值,其语法为:
DeleteSetting(AppName[,Section[,Key]]
其中的参数与上述相同。
下面的示例代码创建带有两个值的子键,列出它们的值,然后删除子键并再次试图列出它们的值。
'演示VBA SaveSetting函数和GetSetting函数的使用Public 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
关于GetSetting函数和SaveSetting函数的一些说明
下面再看一个示例:
Sub TestTheReg() SaveSetting "MyRealGoodApp", _ "TestBranch\SomeSection\AnotherSection", _ "TestKey", "10" MsgBox "现在看看注册表"End Sub Sub TestDelete() If GetSetting("MyRealGoodApp", _ "TestBranch\SomeSection\AnotherSection", _ "") = "" Then DeleteSetting "MyRealGoodApp", _ "TestBranch\SomeSection\AnotherSection", _ "TestKey" MsgBox "再看看注册表" End IfEnd Sub
关于DeleteSetting函数的一些说明
下面再看一个示例,代码如下:
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" PrintRegistrySettingsEnd 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
其中,使用GetAllSettings函数可以获取某应用程序的一系列键。该函数返回一个二维的Variant型数组,其第一维表示返回的设置,第二维则返回键名或键值。
联系客服