[ VBA ] INI 形式のコンフィグファイルから設定値を読み込む ( GetPrivateProfileString )

Pocket

現在 ( 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
参考
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *