AccessのVBAからINIファイルを読み込む方法を紹介します。
実は、他の記事の中に紹介済みではあるのですが、探しにくいので・・
1. モジュール作成
まずは、モジュールに下記のような関数を作成します。
API宣言
'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"
関数1(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
関数2(パス取得)
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の箇所は環境によって修正してください。
INIファイルの設定例
[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\
iniファイル便利です。最近小規模システムでは採用することが多いです。
3. INIファイルのメリット・デメリット
メリットは、DBの名前や環境をかえた時にvbaソースを修正しなくて良いこと
デメリットは、セキュリティ的に大丈夫なの?ということ
デメリットは、セキュリティ的に大丈夫なの?ということ
iniファイル採用の際は、お客様に確認して導入していますが
小規模だとその方がむしろ納品しやすくて喜ばれます。
というのは、やっぱりお客様環境とは微妙に環境が違うので
パスとかもろもろ、自由に指定できるほうが便利といえば便利なんですよね。
用途に応じて、バックアップパスだけiniファイルに入れるとかでも良いんじゃないかと思います。
また、帳票出力する際のPDF出力パスとか、画像パス等
VBA内の定数で定義するのもありだけど、定数よりiniファイルで指定した方がお客様も修正できるので便利です。
コメント