「SQL Server Express と ADO、Excel と VBA を使って課題管理表を作ってみよう」のデータベース接続テストを具体的に説明します。
考え方
エクセルのVBAで、データベースを使ったサーバークライアント型のツールを作る場合、ほとんどの方が最初に引っかかるのがデータベース接続では無いでしょうか。
接続テストを簡単にするため、サブルーチンで最初はVBAを書きます。接続テストが上手くいったらパブリックサブに書き換えます。接続はどのシートからも使いますのでパブリックサブにしておくと汎用性が高まります。
前提条件は以下とします。
| PC名 | TEST_PC (名前付きパイプで接続する場合) |
|---|---|
| IPアドレス | 192.168.0.100 (ipv4で使用者はローカルipを持っている前提) |
| インスタンス | SQLEXPRESS |
| ログイン | test_user |
| パスワード | test_password |
| データベース | test_db |
接続テスト
以下のVBAにて接続試験を行います。
Option Explicit
Sub Setsuzoku()
' 変数宣言
Dim ADO_CN As Object ' コネクションオブジェクト
Dim TXT_CN As String ' 接続文
' 接続文
TXT_CN = _
"Provider=SQLOLEDB" & _
"; Data Source=TEST_PC\SQLEXPRESS" & _
"; Initial Catalog=test_db" & _
"; User ID=test_user" & _
"; Password=test_password"
' ADOコネクションオブジェクトを作成
Set ADO_CN = CreateObject("ADODB.Connection")
' データベース接続
ADO_CN.Open TXT_CN
Msgbox "正常に接続できました"
' 接続解除
ADO_CN.Close
Set ADO_CN = Nothing
End Sub

Public Sub 化
接続が確認できたら、Public を使ってオブジェクトとサブルーチンを宣言します。
Option Explicit
Public ADO_CN As Object ' コネクションオブジェクト
Public Sub connect() ' データベース接続
' 変数宣言
Dim TXT_CN As String ' 接続文
' 接続文
TXT_CN = _
"Provider=SQLOLEDB" & _
"; Data Source=TEST_PC\SQLEXPRESS" & _
"; Initial Catalog=test_db" & _
"; User ID=test_user" & _
"; Password=test_password"
' ADOコネクションオブジェクトを作成
Set ADO_CN = CreateObject("ADODB.Connection")
' データベース接続
ADO_CN.Open TXT_CN
End Sub
Public Sub disconnect() ' データベース切断
' 接続解除
ADO_CN.Close
Set ADO_CN = Nothing
End Sub
接続は connect()、切断は disconnect()、Call を使って呼び出します。
まとめ
データーベース接続は勘違いだったり、タイプミスだったり、よく間違えるところがありますので、事前にそこだけをテストするようまずは心がけましょう。
前の記事 →「SQL-Excelサンプル 課題管理表のデータベース設計」
次の記事 →「SQL-Excelサンプル 課題管理表登録ボタンを押したときの処理」
この記事へのコメントはありません。