Excel VBAの「GetAllSettings 関数」について解説します。
GetAllSettings 関数とは
Excel VBA の GetAllSettings 関数は、SaveSettingsステートメントで保存した設定を一括で取得するための関数です。
SaveSettingsは、アプリケーション設定を次のレジストリルートに保存するステートメントです。[Computer\HKEY_CURRENT_USER\Software\VB and VBA Program Settings]
GetAllSettings 関数の構文や実際の使い方について具体的に解説していきたいと思います。
GetAllSettings 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
GetAllSettings(appname, section)
引数
| 指定項目 | 説明 |
|---|---|
| appname | 【必須】SaveSettingで指定したアプリケーション名(文字列) |
| section | 【必須】設定セクション名(文字列) |
戻り値
指定したアプリケーションとセクションに属するすべての設定を2次元配列として返します。
設定が存在しない場合はEmptyが返ります。
解説(使用例)
ここからは、サンプルを使って使用例や注意点などについて解説します。
GetAllSettings 関数の使い方
設定を保存してからまとめて取得
次の例は、最初にSaveSettingステートメントでWindowsレジストリにエントリを作成したうえで、GetAllSettings 関数を使って、レジストリから設定を一括取得し、その内容をイミディエイトに表示します。 アプリケーション名と section の名前は、GetAllSettings で取得することはできないので、ご注意ください。 最後に、DeleteSetting ステートメントは、アプリケーションのエントリを削除します。
'■GetAllSettings関数サンプル(基本的な使用例)
Sub GetAllSettings_Sample01()
'--- 設定を保存(SaveSettingステートメント)---
SaveSetting "MyApp", "UserInfo", "UserName", "kurumico"
SaveSetting "MyApp", "UserInfo", "UserLevel", "Admin"
SaveSetting "MyApp", "UserInfo", "type", "Kaninchen Dachshund"
'--- 設定を一括取得 ---
Dim arr As Variant
arr = GetAllSettings("MyApp", "UserInfo")
'--- 結果を出力 ---
Dim i As Long
If Not IsEmpty(arr) Then
For i = LBound(arr, 1) To UBound(arr, 1)
Debug.Print arr(i, 0) & " = " & arr(i, 1)
Next i
Else
Debug.Print "設定が存在しません。"
Exit Sub
End If
'--- 設定を削除(DeleteSettingステートメント)---
DeleteSetting "MyApp" '"MyApp"以下をすべて削除
End Subコード実行でイミディエイトに表示された文字列の画像がこちらです。

コード内で使用している SaveSetting と DeleteSetting について少し解説しておきましょう。
SaveSetting と DeleteSetting
SaveSettingステートメントとは
SaveSetting ステートメントを使ってWindowsレジストリにアプリケーションのエントリを登録することができます。
構文
SaveSetting appname, section, key, setting
| 引数名 | 説明 |
|---|---|
| appname | 【必須】アプリケーション名(例:”MyApp”) |
| section | 【必須】設定セクション名(例:”UserInfo”) |
| key | 【必須】設定項目名(例:”UserName”) |
| setting | 【必須】保存する値(文字列)※ |
※ setting に保存できるのは 文字列型のみです(数値や日付も自動的に文字列化されます)
保存先レジストリの場所
SaveSettingで保存された値は、以下のレジストリキーに書き込まれます:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\<appname>\<section>\<key>
たとえば下記のように保存した場合:
SaveSetting "MyApp", "UserInfo", "UserName", "kurumico"
書き込まれるレジストリは次の通りです:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyApp\UserInfo\UserName = "kurumico"
DeleteSettingステートメントとは
Windowsレジストリのアプリケーションのエントリからセクションまたはキー設定を削除します。
構文
DeleteSetting appname [, section] [, key]
| 引数名 | 説明 |
|---|---|
| appname | 【必須】アプリケーション名 |
| section | 【省略可】削除対象セクション名 |
| key | 【省略可】削除対象の項目名 |
使用例
'UserInfo セクション全体を削除する例
DeleteSetting "MyApp", "UserInfo"
'アプリ全体の設定を削除する例
DeleteSetting "MyApp"
DeleteSetting を実行すると、指定したキーやセクションがレジストリから完全に削除されます。
誤って削除すると元に戻せないため、慎重に使用しましょう。
GetAllSettings の注意点と使いどころ
⚠️ 取得できるのは「キーと値」だけ
GetAllSettings 関数は、指定したアプリケーション名とセクション内の「キーと値」ペアのみを取得します。
そのため、次のような点に注意が必要です。
- アプリケーション名(appname)の一覧は取得できません
- セクション(section)の一覧も取得できません
- GetAllSettings は「最下層のキー一覧の取得専用」です
たとえば、複数のセクション(UserInfo, UserLevel, UserTypeなど)を持つ場合、
それぞれのセクション名をあらかじめ把握しておく必要があります。
💡 使いどころ
GetAllSettings の使いどころとしては次のようなケースなどでしょうか。
- ユーザー設定の一覧をデバッグ・確認したいとき
- 保存済みの値をまとめて読み込んで再表示させたいとき
- SaveSettingで作ったキーが正しく保存されているかをチェックしたいとき
たとえば、フォームの初期値やユーザー名・テーマ設定などを保存しておき、まとめて反映させる処理などに組み込むときに便利です。
まとめ
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!





VBA の GetAllSettings 関数は、SaveSettingで登録した設定を2次元配列でまとめて取得する関数です。
切り替えたい場合は次のような方法を利用します。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;幸いです(^^;