INIファイルを扱うにはWin32APIを使います。
まずは、下記のコードをどこかに記述しておいてください。
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 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ファイルのデータを読み込むには次のように記述します。
Sub GetValue() Dim Value As String * 255 Dim section As String Dim fileName As String Dim r As Integer Dim g As Integer Dim b As Integer section = "CellColor" fileName = "C:\work\Excel\conf.ini" 'R Call GetPrivateProfileString(section, "R", "ERROR", Value, Len(Value), fileName) r = Left(Value, InStr(1, Value, vbNullChar) - 1) 'G Call GetPrivateProfileString(section, "G", "ERROR", Value, Len(Value), fileName) g = Left(Value, InStr(1, Value, vbNullChar) - 1) 'B Call GetPrivateProfileString(section, "B", "ERROR", Value, Len(Value), fileName) b = Left(Value, InStr(1, Value, vbNullChar) - 1) Range("B2").Interior.Color = RGB(r, g, b) End Subこの例ではセルの背景色の値を取得して、実際にセルB2の背景色を変更しています。
また、取得した値には後ろにNull文字が含まれていますので、Left関数で取り除いています。
実行結果
書き込み
INIファイルに書き込む例です。Sub SetValue() Dim section As String Dim fileName As String section = "CellColor" fileName = "C:\work\Excel\conf.ini" Call WritePrivateProfileString(section, "R", "255", fileName) Call WritePrivateProfileString(section, "G", "20", fileName) Call WritePrivateProfileString(section, "B", "147", fileName) End Sub
実行結果
スポンサーリンク