Excel VBA:INIファイルへの書き込み/読込み|使用例と解説

Excel VBAでINIファイルへ書き込むコードと、読込むコードの解説を掲載しています。



Homeに戻る > Excel ファイル操作のTipsへ


INIファイルとは、アプリの設定データを保存したテキストファイルのことです。

拡張子は「.ini」で、initializationの略になります。

INIファイルを使うと、次回起動時の初期設定値などを保存でき便利です。

使い方も簡単です。

書き込みと読込みを行うには、Windows APIを使用します。

どちらもセクション(区分名)とキー(データに関連付ける目印)を指定します。


書き込みは、WritePrivateProfileStringを使用します。

構文:

Private Declare Function WritePrivateProfileString Lib "kernel32" _ Alias "WritePrivateProfileStringA" _ (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _ ByVal lpString As Any, ByVal lpFileName As String) As Long

引数:


読込みは、GetPrivateProfileStringを使用します。

構文:

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

引数:


アプリで使用した「Excelで画像表示ソフトを作ってみよう Step 3 終了ボタンと、終了時フォルダをINIファイルに保存」を掲載しています参照してください。




Excel VBAでINIファイルへ書込みと読込みを行う

Excel実行画面

「書き込み」ボタンをクリックすると、E3 ~ E5 が書き込まれます。

「読込み」ボタンをクリックすると、指定データが読み込まれE7 ~ E9 に表示されます。

Excel実行画面

Excel VBA コード

以上を指定し、書込みと読込みを行っています。

'INIファイル読込み
Private Declare Function WritePrivateProfileString Lib "kernel32" _
    Alias "WritePrivateProfileStringA" _
    (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
     ByVal lpString As Any, ByVal lpFileName As String) As Long

'INIファイル書き込み
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

'Excel VBAでINIファイル書き込み
Private Sub CommandButton1_Click()
    Dim lret As Long
    Dim s1 As String
    
    s1 = Range("E3")
    'セクション: Excel_INIファイル
    'キー: 文字
    '書き込む文字: s1
    'INIファイル名: c:\test.ini
    lret = WritePrivateProfileString("Excel_INIファイル", "文字", s1, "c:\test.ini")

    'セクション: Excel_INIファイル
    'キー: 数字
    '書き込む文字: s1
    'INIファイル名: c:\test.ini
    s1 = Range("E4")
    lret = WritePrivateProfileString("Excel_INIファイル", "数字", s1, "c:\test.ini")

    s1 = Range("E5")
    'セクション: エクセル_INIファイル
    'キー: 文字
    '書き込む文字: s1
    'INIファイル名: c:\test.ini
    lret = WritePrivateProfileString("エクセル_INIファイル", "文字", s1, "c:\test.ini")

End Sub

'Excel VBAでINIファイル読込み
Private Sub CommandButton2_Click()
    Dim buf As String * 256
    
    'セクション: Excel_INIファイル
    'キー: 数字
    '既定値: 556
    'INIファイル名: c:\test.ini
    rc = GetPrivateProfileString _
        ("Excel_INIファイル", "数字", 556, buf, Len(buf), "c:\test.ini")
    '文末のNULL文字を削除
    Range("E7") = Left$(buf, InStr(buf, vbNullChar) - 1)

    'セクション: Excel_INIファイル
    'キー: 文字
    '既定値: NULL
    'INIファイル名: c:\test.ini
    rc = GetPrivateProfileString _
        ("Excel_INIファイル", "文字", vbNullString, buf, Len(buf), "c:\test.ini")
    Range("E8") = Left$(buf, InStr(buf, vbNullChar) - 1)

    'セクション: エクセル_INIファイル
    'キー: 文字
    '既定値: "VBA"
    'INIファイル名: c:\test.ini
    rc = GetPrivateProfileString _
        ("エクセル_INIファイル", "文字", "VBA", buf, Len(buf), "c:\test.ini")
    Range("E9") = Left$(buf, InStr(buf, vbNullChar) - 1)
End Sub



Excel VBAで書き込まれた、INIファイル

作成されたINIファイルをメモ帳で開いた画面です。

セクション、キー毎に区分され書き込まれているのが分かります。

上のコードで、指定したデータを確認してください。

Excel VBAで書き込まれた、INIファイル


Homeに戻る > Excel ファイル操作のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved