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
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【クエリテーブル】を使用して外部データベースを読み込む方法についての解説を終了します。ありがとうございました。