[ホーム] > [VBScript FAQ 一覧] > [VBA で Getprivateprofilestring で null 文字(ヌル)が含まれてしまう原因と対処]

VBA で Getprivateprofilestring で null 文字(ヌル)が含まれてしまう原因と対処 | VBScript / VBA FAQ






Getprivateprofilestring で ini ファイルを読み込む



VBA から 拡張子が ini 形式のテキストファイルである設定ファイルから値を取得するために GetPrivateProfileString 関数を使用しました。
以下はサンプルコードです。


lSize = 512
MYSTRING = Space(lSize)
lRet = GetPrivateProfileString("MAIN", "MYSTRING", "", MYSTRING, lSize, sPath)



VBA から実行したところ正常に取得できますが、残りの部分が NUL 文字で取得されてしまいました。
秀丸で開くと"NULL文字を空白に変換して読み込みました"と表示されます。


トラブルの原因


GetPrivateProfileString が余った部分を NUL (chr 0) 文字で埋めてしまうためです。


対処



取得した変数に関して、NUL文字までとして切り取ります。


lSize = 512
MYSTRING = Space(lSize)
lRet = GetPrivateProfileString("MAIN", "MYSTRING", "", MYSTRING, lSize, sPath)
MYSTRING = Left(MYSTRING, InStr(1, MYSTRING, vbNullChar) - 1)




参考


(1)
Windowsはレジストリを使用するのが一般的ですが、一時的にインストールする場合などレジストリに値を入れたくない場合があると思います。
そのような場合にiniファイルを使用します。

(2)
VBA でWin32 APIを使用するため、以下のような宣言が必要です。(declarations)


Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Declare PtrSafe 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








[ホーム] > [VBScript FAQ 一覧]





(ご注意) 本サイト内の内容を使用して発生したいかなる時間的損害、金銭的損害あるいはいかなる損害に対して、いかなる人物も一切の責任を負いません。あくまでも個人の判断で使用してください。
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。
このページはリンクフリーです。(このページへの直接リンクも可能です。)
雑誌等での紹介は特に連絡は不要です。
Copyright(c) tooljp.com 2007-2019