本ページには広告が含まれています。

VBA GetAllSettings関数 保存した設定を一括取得

VBA GetAllSettings関数 保存した設定を一括取得する

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

コード実行でイミディエイトに表示された文字列の画像がこちらです。

GetAllSettings_Sample01実行結果のイミディエイト画像

コード内で使用している 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 の GetAllSettings 関数は、SaveSettingで登録した設定を2次元配列でまとめて取得する関数です。

切り替えたい場合は次のような方法を利用します。

  • アプリケーション名やセクション名の一覧は取得できず、あくまで最下層のキーと値のみを取得できます
    • 設定の読み込み、確認、一覧表示などに最適です
    • 読み込んだ設定を使って、UserFormの表示を制御するなどに活用できます

    以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;幸いです(^^;

    VBAの関数一覧はこちらからご参照ください。

    スポンサーリンク
    スポンサーリンク

    VBAサンプルファイルダウンロードページのご案内

    このページで使用したサンプルファイルの登録はありません(^^;
    ページ内のコードをコピーしてご利用ください。

    ダウンロードページへのリンクは下のカードクリックでジャンプできます。
    よろしければご利用ください!