データベースに接続する際のソースはこんな感じである。ADOを参照設定しておく必要はあるが、その辺は今回省く。過去に作ったものなので、標準モジュールにコピーしても動くとは思う。


Option Explicit

Public Con As ADODB.Connection
Public Cmd As ADODB.Command
Public Rs As ADODB.Recordset
Public ERR As ADODB.Errors
Private Const CI_TIMEOUT As Integer = 30

'----------------------------------------
'# DB OPEN処理
'----------------------------------------
Public Sub openDB()

'----ログインチェックは省略
Set Con = New ADODB.Connection

'★ポイント
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.Path & "\TestAccess.mdb;"

Set Rs = New ADODB.Recordset
Set Cmd = New ADODB.Command

With Cmd
.ActiveConnection = Con
.CommandType = adCmdText
.CommandTimeout = CI_TIMEOUT
End With

End Sub

'----------------------------------------
'# DB CLOSE処理
'----------------------------------------
Private Sub closeDB()

On Error Resume Next

Con.Close
Set Con = Nothing

Exit Sub

PROC_ERR:
ERR.Refresh
Resume Next

End Sub


★ポイント と書いた部分を変更すれば、AccessだろうがPostgreSQLだろうが、対応さえしていればアクセス可能になる。

これを標準モジュールで行うと、このコーディングひとつで1セッション分しか接続できない。このソースをコピーして使うにも、Publicで定義している変数名を変えてやるとか、手を加えなければならないところが多く、煩雑である。これをクラスモジュール化してしまえば必要なときに、必要なだけ作り、いらなくなれば破棄するという処理ができるので似たようなコードがたくさんできることはなくなり、メンテナンス性が向上する。

次回はクラスモジュールのサンプルコードを書いてみようと思う。