GetPrivateProfileString API関数を使って、INIファイルの指定セクションの指定
キーに関連付けられている値を文字列として取得することができます。
● 準備 ●
(1)メモ帳等で以下の2行のテキストファイルを作成します。
[COMPANY]
KYOTEN=大阪
(2)このファイルを「TestReadINI.ini」という名前で保存し、Windowsフォルダへコ
ピーしておきます。
(3)新規標準モジュールを用意し、以下のプロシージャを記述します。
● サンプルプログラム ●
' INIファイル文字列情報取得関数(API)の定義
Public 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
' INIファイルから文字列情報を取得する関数
' 返り値:取得データ
' 引き数:FName - .iniファイル名
' SName - セクション名
' KName - キー名
' Default - 取得に失敗したときや該当する項目が無かった時の戻り値
Public Function ReadIni(ByVal FName As String, ByVal SName As String, _
ByVal KName As String, ByVal Default As String) As String
Dim RtnCD As Long
Dim RtnStr As String
' GetPrivateProfileString APIを利用し、INIファイルから情報取得
RtnStr = Space$(256)
RtnCD = GetPrivateProfileString(SName, KName, Default, RtnStr, 255, _
FName)
' 戻り値設定
If RtnCD > 0 Then
If InStr(RtnStr, Chr$(0)) > 0 Then
ReadIni = Left$(RtnStr, InStr(RtnStr, Chr$(0)) - 1)
Else
ReadIni = ""
End If
Else
ReadIni = Default
End If
End Function
' INIファイルから取得した文字列情報を表示する関数
Public Sub ShowParaStr()
Const IniName = "TestReadIni.ini" ' INIファイル名
Const SecName = "COMPANY" ' セクション名
Const KeyName = "KYOTEN" ' キー名
Const Default = "NONE" ' デフォルト値
MsgBox "キーの値は「" & _
ReadIni(IniName, SecName, KeyName, "") & _
"」です。"
End Sub
● 動作確認 ●
「ShowParaStr」プロシージャを実行して下さい。
標準モジュールですので、「ShowParaStr」プロシージャ内にカーソルを置いて実行ボタンを押すか、[F5]キーを押します。
INIファイルが正常に読込まれると、「キーの値は「大阪」です。」とメッセージが表示されます。
● 詳細 ●
[GetPrivateProfileString API関数]
引数:lpApplicationName - セクション名が入った文字列バッファ
lpKeyName - キー名が入った文字列バッファ
lpDefault - キーが見つからない場合に格納する文字列バッファ
lpReturnedString - 取得した文字列バッファ
nSize - lpReturnedStringバッファのサイズ
lpFileName - INIファイルの名前が入った文字列バッファ
戻り値:成功すると、取得された文字列の文字数が返ります。
テキストがないときや失敗した場合は、0が返ります。
● 補足説明 ●
INIファイルはデフォルトでWindowsフォルダを探しに行きますが、パスを含めて指定すれば、他の場所(例えばAccessアプリケーションと同じフォルダ)に置いても構いません。