現在 ( 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