GetIni()

INI ファイルからデータを読み出す関数です。対になる書き込み関数 SetIni() はこちら
設定の保存などに用いられる INI ファイルですが、Windows95 からはレジストリにその役割を取って代わられることになりました。
しかし、アンインストールや設定の退避などにおいては、単なるテキストファイルである INI の方が操作が容易であるなどのメリットもあります。
ユーザーに公開してもいい設定内容などの保存には、レジストリよりも向いていると個人的には思います。ケースバイケースでどうぞ。

'標準モジュールに記述します。

Option Explicit

Private Declare Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringA" _
    (ByVal lpApplicationName As String, _
     ByVal lpKeyName As Any, _
     ByVal lpDefault As String, _
     ByVal lpReturnedString As String, _
     ByVal nSize As Long, _
     ByVal lpFileName As String) As Long

Public Function GetIni(strSecName As String, strKeyName As String, strIniPath As String) As String
'INIファイルから、指定したキーの内容を取得します。
'<引数>
'  strSecName : セクション名
'  strKeyName : キー名
'  strIniPath : 読み取る INI ファイルのフルパス
'<参考>
'  strSecName に vbNullString を指定すると、strBuf には存在する全セクション名が vbNullChar 区切りで格納されます。
'  同様に、strKeyName に vbNullString を指定すると、存在する全キー名が vbNullChar 区切りで格納されます。

    Dim strBuf As String * 256  'キー内容を格納するバッファ
    Dim lngRet As Long          'API からの戻り値

    lngRet = GetPrivateProfileString(strSecName, strKeyName, vbNullString, strBuf, 256, strIniPath)

    'Null文字の除去
    GetIni = Left$(strBuf, InStr(strBuf, vbNullChar) - 1)
End Function

以下のような内容の INI ファイルが、パス「C:\Temp\hoehoe.ini」にあると仮定します。

[Section1]
Key1=わんわん
Key2=にゃんにゃん

実行例:

'フォームにボタンを用意して、以下のプロシージャを記述します。

Private Sub Command1_Click()
    Dim strData As String
    strData = GetIni("Section1", "Key1", "C:\Temp\hoehoe.ini")
    MsgBox "セクション「Section1」、キー「Key1」の内容は " & strData & " です。"
End Sub

実行結果
実行結果

戻る