■ 最新の投稿

VBA:『DAO』参照設定 vs. 非参照設定(CreateObject)の違い

VBAでは、参照設定する方法と、しない(遅延バインディング)で CreateObjectAs Objectを使う方法があります。

例:DAOを使った場合

▼参照設定(早期バインディング)

参照設定 → 「Microsoft Office 16.0 Access database engine Object Library」 を追加します。

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb()
Set rs = db.OpenRecordset("SELECT * FROM 顧客", dbOpenDynaset)

▼ 非参照設定(遅延バインディング)

Dim db As Object
Dim rs As Object

Set db = CreateObject("DAO.DBEngine.120").OpenDatabase("C:\sample.mdb")
Set rs = db.OpenRecordset("SELECT * FROM 顧客", 2)  ' dbOpenDynaset = 2

◆参照設定あり vs. 非参照設定(CreateObject)

項目参照設定あり参照設定(CreateObject)
補完(IntelliSense)あり ✅なし ❌
実行速度速い ✅やや遅い ❌
配布注意必要 ❌安心 ✅(参照設定の誘導なくとも、コードのみ配布できる)
安定性高い ✅やや不安定(バージョン依存)❌

「補完」とはVBA記載中に、ピリオドを押すとプロパティやメソッドが選択できる機能のことです。これは、便利ですよね。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です