マクロで使用する値を外部ファイル化して使い分ける

マクロの動作仕様は同じであるものの、使用する値(パラメーター)だけを切り替えたい場合がありますが、都度マクロコードを書き換えるのは面倒です。そうした値を、外部ファイル化する方法を紹介します。設定ファイルをフォルダーごとに置いて使い分けたり、設定ファイルを上書きして更新したりできます。

設定ファイル(INIファイル)の書式

設定ファイルはINIファイルの書式で作成します。セクションとキーが記述されたテキスト形式のファイルです。メモ帳などで作成・編集します。

セクションはグループ名のようなもので、[セクション名] の形式で記述します。
キーはそれぞの値で、キー名=値 の形式で記述します。
;コメント文章 の形式でコメントも記述できます。

;INIファイルの記述例
[Base]
FontName = メイリオ
FontSize = 10.5
[Title]
FontName = Meiryo UI

日本語テキストを使う場合、エンコードはShift-JIS で保存します。UTF-8などでは文字化けします。

ファイル名は任意です。拡張子も.iniでなくても構いません。

VBAで設定ファイルから値を読み込む

Dim pathINI As String
Dim a As String, b As String, c As String

pathINI = ActiveDocument.Path & "\Macro.ini" '設定ファイルのパス
a = System.PrivateProfileString(pathINI, "Base", "FontName")
b = System.PrivateProfileString(pathINI, "Base", "FontSize")
c = System.PrivateProfileString(pathINI, "Title", "FontName")
値の呼び出し : System.PrivateProfileStringプロパティ

System.PrivateProfileString(設定ファイルのパス, セクション名, キー名) の形式です。

戻り値はすべてStringです。必要に応じてCIntCLngなどで値を変換して使います。設定ファイルが見つからない場合や指定のセクションまたはキーが見つからない場合、空文字("")を返します。エラーにはなりません。

設定ファイルの場所とパス指定

設定ファイルの場所や名前は、切り分けの対象に応じて使い分けます。

文書ファイルと同じフォルダーに置く場合
ActiveDocument.Path & "\Macro.ini"

テンプレートフォルダーに置く場合
ActiveDocument.AttachedTemplate.Path & "\Macro.ini" 

 

タイトルとURLをコピーしました