【Excel VBA】設定値をconfigから読み込む

VBA 【Excel VBA】設定値をconfigから読み込む

こんにちは、おくやんです。

このブログでは、開発に役立つノウハウを実践的なコード例と共に紹介しています。

VBAプログラムでConfig設定を管理する機能を利用したい!
簡単に実装する方法があれば知りたい。。。

今回は、このようなお悩みを解決します。

本記事の内容

VBAにおけるConfig設定の重要性
クラスモジュールを利用したConfig管理機能の実装
VBA サンプルプログラムの紹介

今回はExcel VBAで、Config管理を行う機能の実装方法についてまとめました。

本記事で紹介するクラスモジュールを利用することで、誰でも簡単にConfig管理機能を実装することが可能です。

VBAではConfig管理を行う標準機能が存在しないため、是非使い方を覚えて実装できるようにしましょう。

VBAにおけるConfig設定の重要性

VBAにおけるConfig設定の重要性

VBAに限らずツールやシステム開発を行う際は、Config情報を別ファイルやシートから読み取るようにすると非常に便利です。

動作環境によって変わる値をConfig定義にすることで、環境が変わった場合でもプログラムに手を入れることなく対応することができます。

特にVBAで作るツールは、ユーザのPC上で動作させるため環境の変化を受けやすいです。

ユーザのPCで動作するVBAにおいては、Config設定は非常に重要となります。

Config設定例
Config設定例

クラスモジュールを利用したConfig管理機能の実装

クラスモジュールを利用したConfig管理機能の実装

続いてはConfig管理を行うクラスモジュールを紹介します。

Config設定の重要性について説明しまいたが、残念なことにVBAではConfig管理を行う機能が標準ではありません。

自前でシートやファイルから読み取る処理を実装することもできますが、開発効率向上のためクラスモジュールの利用をお勧めします。

紹介するクラスモジュールを利用することで、誰にでも簡単にConfig管理機能の実装が可能です。

仕様については以下で解説しています。

note(ノート)

こんにちは、おくやんです。 Excel VBAの開発効率を大幅に向上させる、自作のライブラリクラスをご紹介しています。 …

使い方を説明します。

Configシートを作成する

まずはConfig管理用のシートを作成します。

作成したシート上にKeyカラムとValueカラムを用意してください。

特定フォーマットのシートを用意することで、Config設定をクラスモジュールが自動で読込んでくれます。

Config管理シートのフォーマット

・シート名は「config」とする
・設定はヘッダーありの表形式で管理する
・「Key」カラムと「Value」カラムを用意する
configシート
configシート

Config情報をKey-Value型で管理することができます。

先頭に「#」をつけることでコメント行を書くことも可能です。

続いてVBAコードを書いていきます。

Config情報を呼び出す

VBAプログラムからConfig設定を呼び出します。

クラスモジュールに用意されているVal関数を利用することで、設定の取得が可能です。

Dim cnf As Config: Set cnf = New Config

' Config情報取得
Debug.Print cnf.Val("SHEET_NAME")   '=> list
Debug.Print cnf.Val("MAIL_ADDRESS") '=> sample@example.com

インスタンスを生成したタイミングで、Configシートの内容が自動で読み込まれます。

後はKey値を引数に指定するだけ、紐づくValue値を取得可能です。

デフォルト値を設定する

指定したKey値がシート上に未設定の場合の動作を指定しましょう。

Val関数の第2引数を指定することで、デフォルト値を設定できます。

Dim cnf As Config: Set cnf = New Config

' Config情報取得
Debug.Print cnf.Val("SHEET_NAME")   '=> list
Debug.Print cnf.Val("MAIL_ADDRESS") '=> sample@example.com

' デフォルト値設定
Debug.Print cnf.Val("SAMPLE", "デフォルト設定") '=> デフォルト設定

デフォルト値は省略可能です。

省略した際に、未設定のKey値を指定するとエラーが発生するので注意してください。

Key値が未設定時に発生するエラー
Key値が未設定時に発生するエラー

VBA サンプルプログラムの紹介

VBA サンプルプログラムの紹介

クラスモジュールを利用したサンプルプログラムを紹介します。

以前紹介したシート検索プログラムを、クラスモジュールを利用してリファクタリングしてみましょう。

関連記事

こんにちは、おくやんです。 このブログでは、開発に役立つノウハウを実践的なコード例と共に紹介しています。 Excel上のシートを検索する処理をVBAで実装したい! だけど、書き方がわからない。。。 今[…]

リファクタリング後のサンプルプログラムは下記からダウンロードできます。

note(ノート)

こんにちは、おくやんです。 Excel VBAの開発効率を大幅に向上させる、自作のライブラリクラスをご紹介しています。 …

入力シートの作成

クラスモジュールを利用するため、configシートを新たに作成します。

ユーザから入力してもらう想定の「検索対象ファイルのパス」と「検索対象のシート名」を設定しましょう。

configシートの作成
configシートの作成

ユーザが直接configシートを書き換える運用もできますが、それでは現仕様から大きく変わってしまいます。

利用者への影響が少ないように、Excel関数の参照を利用してValue値を設定しましょう。

Value値の指定

ユーザへの影響を最小限にしつつ、クラスモジュールを利用する方法へリファクタリングができます。

Configの読み取り

続いて、VBAコードを書き換えます。

Val関数を利用して設定値を取得しましょう。

' Config取得
Dim cnf As Config: Set cnf = New Config
Dim path As String: path = cnf.Val("FILE_PATH")
Dim sheetName As String: sheetName = cnf.Val("SHEET_NAME")

Cells関数を利用して取得するのに比べ、可読性も向上しますね。

より多くの設定を持つプログラムでも、シンプルにコードをまとめることができます。

まとめ: VBAでConfig管理してみよう

まとめ: VBAでConfig管理してみよう

今回はExcel VBAで、Config管理を行う機能の実装方法についてまとめました。

標準機能では用意されていないConfig管理の機能ですが、下記クラスモジュールを利用することで簡単に実装が可能です。

note(ノート)

こんにちは、おくやんです。 Excel VBAの開発効率を大幅に向上させる、自作のライブラリクラスをご紹介しています。 …

また、サンプルプログラムも併せてチェックしてみて下さい。

note(ノート)

こんにちは、おくやんです。 Excel VBAの開発効率を大幅に向上させる、自作のライブラリクラスをご紹介しています。 …

最後まで読んでいただき、ありがとうございます。


【Excel VBA】設定値をconfigから読み込む
最新情報をチェックしよう!