使用Windows注册表存储Excel设置
Technorati 标签: Windows注册表,Excel,VBA
选择桌面左下角的“开始”,单击“运行”,在对话框中输入“regedit”后单击“确定”,可以查看注册表。如下图所示,Excel在注册表中存储的配置信息。
VBA提供了一些用于修改和读取注册表的函数。其中,函数SaveSetting能够创建新的注册表键或者更新已存在的注册表键;函数GetSetting可以获得与注册表键相关的数值,而GetAllSettings函数则可以获得与某应用程序相关的一系列键;函数DeleteSetting用来删除注册表键。
下面是一段VBA代码,示范了使用VBA注册表函数处理注册表:
1: Sub UseWithRegistry()
2: Dim vaKeys As Variant
3: '创建新的注册表条目
4: SaveSetting "XLTest", "General", "App_Name", "XLTestSample"
5: SaveSetting "XLTest", "General", "App_Version", "1.0.0.0"
6: SaveSetting "XLTest", "General", "App_Date", "16/06/2008"
7:
8: PrintRegistrySettings
9:
10: '更新设置
11: SaveSetting "XLTest", "General", "App_Version", "1.0.0.1"
12:
13: PrintRegistrySettings
14:
15: '将所有的设置放到数组中
16: vaKeys = GetAllSettings("XLTest", "General")
17: PrintAllSettings vaKeys
18:
19: '删除设置
20: DeleteSetting "XLTest", "General", "App_Name"
21: DeleteSetting "XLTest", "General", "App_Version"
22: DeleteSetting "XLTest", "General", "App_Date"
23:
24: PrintRegistrySettings
25: End Sub
26:
27: Sub PrintRegistrySettings()
28: On Error Resume Next
29: Debug.Print "Application Name:" & GetSetting("XLTest", "General", "App_Name")
30: Debug.Print "Application Version:" & GetSetting("XLTest", "General", "App_Version")
31: Debug.Print "Application Date:" & GetSetting("XLTest", "General", "App_Nate")
32: Debug.Print "--------------------------------------------"
33: End Sub
34:
35: Sub PrintAllSettings(vaSettings As Variant)
36: Dim nItem As Integer
37: If IsArray(vaSettings) Then
38: For nItem = 0 To UBound(vaSettings)
39: Debug.Print vaSettings(nItem, 0) & ":" & vaSettings(nItem, 1)
40: Next
41: End If
42: Debug.Print "--------------------------------------------"
43: End Sub
输出结果为:
Application Name:XLTestSample
Application Version:1.0.0.0
Application Date:
——————————————–
Application Name:XLTestSample
Application Version:1.0.0.1
Application Date:
——————————————–
App_Name:XLTestSample
App_Version:1.0.0.1
App_Date:06/16/2008
——————————————–
Application Name:
Application Version:
Application Date:
——————————————–
注意,使用GetAllSettings函数返回一个Variant型的二维数组,其第一维表示返回的每个设置,第二维则表示下列两项之一:键名或者键值。
使用SaveSetting函数创建的注册表键被添加到HKEY_CURRENT_USER\Software\VB and VBA Program Settings\中,如下图所示。