Excel VBA QueryTableを使用して外部データベースを読み込む

スポンサーリンク

QueryTableを使用して外部データベースを読み込む方法

外部データベースをワークシートに読み込む方法は、ActivX Data Objects【アクティブエックス データ オブジェクツ】などを使用しても読み込むことができますが、
ここでは、QueryTable【クエリテーブル】オブジェクトを使用して更新可能な外部データベースの読み込みについて解説します。

QueryTableを使用して外部データベースを読み込む手順

1.QueryTabls【クエリーテブルズ】コレクションのAdd【アド】メソッドを使用して、新しいデータベースクエリ(QueryTableオブジェクト)を作成します。Query【クエリ】は「問い合わせ」という意味がありTable【テーブル】は「表」という意味があります。


2.作成されたQueryTable【クエリテーブル】オブジェクトに対して外部データベースを設定するプロパティを使用して読み込みの設定をします。


3.QueryTable【クエリテーブル】オブジェクトのRefresh【リフレッシュ】メソッドを使用してQueryTable【クエリテーブル】オブジェクトを更新してワークシートに内容を表示します。


Accessの「商品マスター」テーブルを読み込んでワークシートに表示する例

「商品マスター」テーブルをブックを開くたびに更新して読み込むコードと解説

Sub 外部データベース読み込み()
Dim 接続文字列 As String
接続文字列 = "OLEDB;" & _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.Path & "¥Database1.accdb"
With ActiveSheet.QueryTables.Add(接続文字列, Range("A1"))
.Name = "商品マスター"
.CommandType = xlCmdTable
.CommandText = "商品マスター"
.RefreshOnFileOpen = True
.Refresh
End With
End Sub
2行目【Dim 接続文字列 As String】
QueryTable【クエリテーブル】オブジェクトを追加するQueryTables【クエリテーブルズ】コレクションのAdd【アド】メソッドの接続先を表す引数Connection【コネクション】に設定する接続文字列を格納する変数「接続文字列」を文字列型(String)で宣言します。


3行目~5行目【接続文字列 = “OLEDB;” & _
“Provider=Microsoft.ACE.OLEDB.12.0;” & _
“Data Source=” & ThisWorkbook.Path & “¥Database1.accdb”】

接続するデータの種類とデータの場所を接続文字列として指定して変数「接続文字列」に代入します。接続文字列の指定方法についてはこちらをご覧ください。データベースの場所を設定するDate Source【データソース】にはWorkbook【ワークブック】オブジェクトのPath【パス】プロパティを使用して「ThisWorkbook」つまり、このコードが記述されているブックと同じ場所(パス)にある「Database1.accdb」を指定しています。


6行目【With ActiveSheet.QueryTables.Add(接続文字列, Range(“A1”))】
QueryTables【クエリテーブルズ】コレクションのAdd【アド】メソッドを使用してQueryTable【クエリテーブル】オブジェクトを
追加します。第一引数の接続先を表すConnection【コネクション】には変数「接続文字列」を指定し第二引数の抽出先を表すDestnation【ディスティネーション】にはA1セルを指定してWith【ウィズ】ステートメントで指定します。


7行目【.Name = “商品マスター”】
QueryTable【クエリテーブル】オブジェクトのName【ネーム】プロパティを使用してこの接続のデータ範囲に名前を設定します。


8行目【.CommandType = xlCmdTable】
QueryTable【クエリテーブル】オブジェクトのCommandType【コマンドタイプ】プロパティを使用して実行するデータベースのタイプを指定します。タイプはXlCmdTypeクラスの定数から設定します。


9行目【.CommandText = “商品マスター”】
QueryTable【クエリテーブル】オブジェクトのCommandText【コマンドテキスト】プロパティを使用して
抽出する外部データベースのテーブル名を指定します。


10行目【.RefreshOnFileOpen = True】
QueryTable【クエリテーブル】オブジェクトのRefreshOnFileOpen【リフレッシュオンフィルオープン】プロパティにTrueを指定して、ブックを開くたびに外部データベースに接続してデータを更新する
設定にします。


11行目【.Refresh】
QueryTable【クエリテーブル】オブジェクトのRefresh【リフレッシュ】メソッドを使用して
各プロパティで設定した内容を反映してQueryTable【クエリテーブル】オブジェクトを更新して
セルにデータを書き込みます。


「外部データ範囲のプロパティ」ダイアログボックスと各プロパティ


※チェックボックスはプロパティに「True」を設定するとチェックされ「False」を設定するとチェックが外れます。

QueryTable【クエリテーブル】オブジェクトのプロパティの詳細はこちらをご覧ください。


実行結果


以上で、QueryTable【クエリテーブル】を使用して外部データベースを読み込む方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告