Excel VBA iniファイルの読み込み

  • デル株式会社
  • VBA(VB6)でiniファイルを読み込みする方法。
    NULLの扱いがCとVBではちょっと変わってくるから、Cと同じ意識でやっちゃうと実行エラーになっちゃうのが面倒。
    いろんなサイトで紹介されてるけど、メモするよ。

    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 Const STRING_MAX_SIZE As Integer = 4096
    
    '  【入出力】 striniFile      : (I)  iniファイル名(ファイル名はフルパスとする事)
    '             strSection      : (I)  iniファイルセクション名
    '             strKey          : (I)  iniファイルキー名
    '  【戻り値】 読み込んだiniファイルのvalue値。
    Public Function Readini(ByVal striniFile As String, _
                            ByVal strSection As String, _
                            ByVal strKey As String) As String
        
        
        Dim nret As Long    '復帰値格納用
        '---------------
        ' iniファイル読み込み時の設定文字(固定長)
        ' STRING_MAX_SIZE分の固定領域
        ' iniファイル読み込み時、可変長ではアボートする。
        '---------------
        Dim strValue As String * STRING_MAX_SIZE
        
        strValue = Space(STRING_MAX_SIZE) 'スペース埋めしておかないとサイズ指定の文字列はゴミが入っている。(初期化されていない。)
    
        nret = GetPrivateProfileString(strSection, strKey, "", strValue, STRING_MAX_SIZE, striniFile)
        
        'iniファイル読み込みで取得した文字列はNULLも取ってしまっているので、NULLの直前まで取得
        Readini = Left(strValue, (InStr(strValue, Chr(0)) - 1))
    End Function
    
    

    STRING_MAX_SIZEをconstにしてるけど、これも関数の引数にしたり、自分で改造してね。

    関連記事

    ページ上部へ戻る