マクロの動作仕様は同じであるものの、使用する値(パラメーター)だけを切り替えたい場合がありますが、都度マクロコードを書き換えるのは面倒です。そうした値を、外部ファイル化する方法を紹介します。設定ファイルをフォルダーごとに置いて使い分けたり、設定ファイルを上書きして更新したりできます。
設定ファイル(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
です。必要に応じてCInt
やCLng
などで値を変換して使います。設定ファイルが見つからない場合や指定のセクションまたはキーが見つからない場合、空文字(""
)を返します。エラーにはなりません。
設定ファイルの場所とパス指定
設定ファイルの場所や名前は、切り分けの対象に応じて使い分けます。
文書ファイルと同じフォルダーに置く場合
ActiveDocument.Path & "\Macro.ini"
テンプレートフォルダーに置く場合
ActiveDocument.AttachedTemplate.Path & "\Macro.ini"