現在 ( 2015年 ) ではあまり使用されていませんが、VBA や VB6 で作られたアプリケーションの中には、 INI ファイル形式でパラメータなどの設定値を記述することが一般的でした。もちろん今でも使用はされていますが、積極的に採用していることは少数派だと思われます。
ここでは、それでも現役で使用されている INI 形式の設定ファイルを読み込むサンプルを掲載しています。
スポンサーリンク
INIファイルにコメントを記述する
INI ファイルにコメント記述する場合は、先頭に 1行コメント “;” を記述します。
; ファイル名:sample.ini [DB1] USER=username PASS=password [DB2] USER=username PASS=password
INIファイル読み込み API
VBA には、INI ファイル形式の設定ファイルを読み込む関数がありませんので、Win32API の GetPrivateProfileString 関数を使用することにします。
GetPrivateProfileString 関数の引数の説明
パラメータ名 | 内容 |
---|---|
lpAppName | セクション名 |
lpKeyName | キー名 |
lpDefault | キーが見つからなかった場合に取得するデフォルト値 |
lpReturnedString | 取得した文字列が入るバッファ |
nSize | 取得した文字列が入るバッファのサイズ |
lpFileName | INIファイルのパス |
サンプルスクリプト
'-------------------------------------------- ' Win32APIをVBAから呼び出すための定義 '-------------------------------------------- Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ( _ ByVal lpAppName As String, _ ByVal lpKeyName As Any, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Long, _ ByVal lpFileName As String) As Long '************************************************** ' INIファイル値取得 '************************************************** Public Function GetIniValue() As String ' 値を取得するバッファを確保する Dim value As String * 256 Dim fileName As String fileName = "sample.ini" ' INIファイルパスを設定 ' Win32API の呼び出し ' --- INIファイルからパラメータを取得する Call GetPrivateProfileString("DB1", "USER", "default value", value, Len(value), fileName) Debug.Print value ' username End Function