使用Windows注册表存储Excel设置

Technorati 标签: ,,

选择桌面左下角的“开始”,单击“运行”,在对话框中输入“regedit”后单击“确定”,可以查看注册表。如下图所示,Excel在注册表中存储的配置信息。

Snap1

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\中,如下图所示。

Snap2


提示:您可以在评论中使用HTML标签,且任何与HTML标签相同的符号都会被理解为HTML标签并以相应的格式显示.如果您的评论中有代码,可以使用相应的标签,例如,如果有VB或VBA代码,则可以使用[vb]标签,即[vb]放置的代码[/vb],这样会很清晰地显示代码.

留下回复