【Access】AccessVBAでiniファイルを読み込む方法

AccessのVBAからINIファイルを読み込む方法を紹介します。
実は、他の記事の中に紹介済みではあるのですが、探しにくいので・・

1. モジュール作成

まずは、モジュールに下記のような関数を作成します。

'Windows  APIの宣言
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
Declare Function GetPrivateProfileStringA Lib "kernel32" (ByVal lpAppName$, ByVal lpKeyName$, ByVal lpDefault$, ByVal lpReturnString$, ByVal nSise%, ByVal lpFileName$) As Integer

' iniファイル
Public Const IniFileName = "hoge.ini"


Rem ———————————————————————————-
Rem 関数名 : ReadINI
Rem 処理内容 : INIファイルの情報取得
Rem 引 数  : Section,Entry
Rem 戻り値  : 無し
Rem ———————————————————————————-
Public Function ReadINI(Section As String, Entry As String) As String
Dim n As String * 255
Dim rc As Long

rc = GetPrivateProfileString(Section, Entry, “”, n, 255, MyPath & IniFileName)
ReadINI = funLeftB(n, InStr(n, Chr(0)) – 1)

End Function

Rem -----------------------------------------------------------
Rem     関数名   : MyPath
Rem     処理内容 : パス情報の取得
Rem     引  数  : 無し
Rem     戻り値  : 無し
Rem -----------------------------------------------------------
Public Function MyPath()

  MyPath = Application.CurrentProject.Path
  If Right(MyPath, 1) <> "\" Then
    MyPath = MyPath & "\"
  End If
  
End Function

2. INIファイル作成

続いて、保存時にXXX.iniとファイル名を指定してaccessと一緒のフォルダに入れます。
メモ等で書いて保存します。hogeの箇所は環境によって修正してください。

[MYSQL]
SERVER_NAME=localhost
DB_NAME=hoge
DB_USER=root
DB_PASS=hoge
DRIVER_NAME=MySQL ODBC 5.1 DRIVER
[BACKUP]
BACKUP_PATH=C:\prj\access1\SYSTEM_BACKUP\</code>

iniファイル便利です。最近小規模システムでは採用すること多いです。

3. INIファイルのメリット・デメリット

メリットは、DBの名前や環境をかえた時にvbaソースを修正しなくて良いこと
デメリットは、セキュリティ的に大丈夫なの?ということ

一応、iniファイル採用の際は、お客様に確認して導入していますが
小規模だとその方がむしろ納品しやすくて喜ばれます。
というのは、やっぱりお客様環境とは微妙に環境が違うので
パスとかもろもろ、自由に指定できるほうが便利といえば便利なんですよね。
用途に応じて、バックアップパスだけiniファイルに入れるとかでも
良いんじゃないかなって思います。

帳票出力する際のPDF出力パスとか、画像パスとか
VBA内の定数で定義するのもありだけど、定数よりiniファイルの方が
お客様も修正できるので便利ですね。

コメント

タイトルとURLをコピーしました