使用GetSetting函數和SaveSetting函數讀寫注冊表設置


可以使用注冊表來存儲應用程序的初始和配置的設置。VBA允許讀寫下列注冊表路徑中的注冊表設置:
\HKEY_CURRENT_USER\Software\VB and VBA Program Settings\{子鍵}
要在這個注冊表路徑中讀取注冊表設置,使用GetSetting函數。要寫入注冊表設置到該注冊表路徑中,使用SaveSetting函數。注意,不正確地修改注冊表會導致嚴重的后果,甚至需要重新安裝操作系統。
GetSetting函數和SaveSetting函數的語法如下:
SaveSetting(AppName,Section,Key,Setting)
GetSetting(AppName,Section,Key[,Default])
其中:

  • 參數AppName必需,String類型,指定VB and VBA Program Settings鍵的子鍵;
  • 參數Section必需,String類型,在參數AppName中指定的鍵的子鍵;
  • 參數Key必需,String類型,在參數Section中指定的鍵的值;
  • 參數Setting必需,String類型或數值型,存儲在參數Key指定的值中的一塊數據;
  • 參數default可選,String類型,指定當參數Key中沒有設置值時返回的數據。

使用DeleteSetting函數刪除子鍵或值,其語法為:
DeleteSetting(AppName[,Section[,Key]]
其中的參數與上述相同。
下面的示例代碼創建帶有兩個值的子鍵,列出它們的值,然后刪除子鍵並再次試圖列出它們的值。

 

 

 

 

 

關於GetSetting函數和SaveSetting函數的一些說明

  • 如果忽略GetSetting函數中的參數Default,則認為是一個零長字符串(”")。
  • 參數Section可以是一個嵌套子鍵的路徑,每個子鍵與其父鍵之間使用反斜杠隔開。例如,如果參數Section的值為Settings\Coordinates,則表明從HKEY_CURRENT_USER\Software\VB and VBA Program Settings\[AppName]\Settings\Coordinates中檢索值。
  • SaveSetting函數不允許改變注冊表項的缺省值,否則會產生運行時錯誤。

下面再看一個示例:

 

論壇找來的講文件打開次數寫入注冊表,用來計算excel打開次數的代碼

Private Sub Workbook_Open()
Counter = GetSetting("XYZ Corp", "Budget", "Count", 0)
LastOpen = GetSetting("XYZ Corp", "Budget", "Opened", " ")

Msg = "本文件已經打開 " & Counter & "次。"
Msg = Msg & vbCrLf & " 上次打開的時間為" & LastOpen
MsgBox Msg, vbInformation, ThisWorkbook.Name

Counter = Counter + 1
LastOpen = Date & " " & Time
SaveSetting "XYZ Corp", "Budget", "Count", Counter
SaveSetting "XYZ Corp", "Budget", "Opened", LastOpen
End Sub

  

 

 

 

關於DeleteSetting函數的一些說明

  • 不能使用DeleteSetting函數從注冊表的主鍵里刪除那些不是HKEY_CURRENT_USER\Software\VB and VBA Program Settings的子鍵的項。
  • 如果提供了參數Key,那么只有名為Key的項及其關聯的值被刪除;如果忽略了參數Key,那么參數Section指定的子鍵將被刪除;如果忽略了參數Section,那么參數AppName的鍵將被全部刪除。
  • DeleteSetting函數不能刪除屬於任何鍵的缺省值。

下面再看一個示例,代碼如下:

 

 

 

 

 

其中,使用GetAllSettings函數可以獲取某應用程序的一系列鍵。該函數返回一個二維的Variant型數組,其第一維表示返回的設置,第二維則返回鍵名或鍵值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM