接続をして切断するだけの超簡単プログラムです。. 【エクセルVBAでAccess連携】SQLのSELECT,FROM,WHEREによる様々なデータ抽出方法, 【エクセルVBAでAccess連携】SQLのJOINを使って複数のテーブルを組み合わせてデータを取り出す, 【エクセルVBAでAccess連携】データベースのテーブルにレコードを追加するシンプルな方法, エクセルVBAでAccessデータベースに複数のレコードを追加する方法とその実行速度について, 【エクセルVBAでAccess連携】データベースに特定条件のデータが存在するかどうかを判定する, エクセルVBAからAccessデータベースのレコードを呼び出して修正して上書き更新する方法, エクセルVBAでAccessデータベースの複数のレコードをまとめて上書き更新する方法, エクセルVBAでAccessデータベースの複数のレコードを上書き更新する場合の実行速度について, エクセルVBAでAccessデータをグループで集計して抽出するGROUP BY句と集計関数の使い方, エクセルVBAでAccessデータを集合関数による条件で抽出するHAVING句の使い方, エクセルVBAでAccessデータベースからFormat関数によるSQL文で特定の日付で抽出, 詳解! エクセルVBAからAccessデータベースを操作する方法についてシリーズでお伝えしています。, さて、今回からいよいよ実際にエクセルVBAからAccessデータベースに接続をしていきたいと思います。, 都道府県ごとの面積や人口、区市町村数などをまとめたデータです。テーブル名は「データ」という名前です。, このテーブルを含むAccessデータベースファイルを「test.accdb」というファイル名で、今回のエクセルVBAを記述したファイルと同じフォルダに格納しました。, Accessデータベースと接続をしてやり取りをする際には、ADODB.Connectionオブジェクトを使います。, ADOとは、Microsoftが提唱しているデータアクセス技術のことである。 ADOで特定フィールドのデータを取得する方法. ActiveX Data objects【アクティブエックスデータオブジェクツ】(以下ADO)で、特定のフィールドのデータを取得するには、レコードのフィールドを表すField【フィールド】オブジェクトのValue【バリュー】プロパティを使用します。, データを取得するフィールドを指定するには、Recordset【レコードセット】オブジェクトのFields【フィールズ】プロパティを使用してField【フィールド】オブジェクトを参照します。, 外部データベースの特定のフィールドを表すField【フィールド】オブジェクトを参照するには、Recordset【レコードセット】オブジェクトのFields【フィールズ】プロパティを使用します。, 外部データベースの特定のフィールドの値を取得または設定するには、Field【フィールド】オブジェクトのValue【バリュー】メソッドを使用します。, 【取得】 オブジェクト.Value 【設定】 オブジェクト.Value = 設定値, 外部データベースのカレントレコードの位置がデータベースの範囲を超えたかをブール型の値で返します。値の取得のみ可能です。 BOFは「Begin Of File【ビギインオブファイル】」の略で、カレントレコードの位置が外部データベースの先頭のレコードより前にあるかないかを判定する場合に使用します。, EOFは「End OF File【エンドオブファイル】」の略で、カレントレコードの位置が外部データベースの最後のレコードより後にあるかないかを判定する場合に使用します。, Recordset【レコードセット】オブジェクト内のカーソルを移動するには以下の表のRecordset【レコードセット】オブジェクトの各メソッドを使用します。, オブジェクト変数.MoveNext オブジェクト変数.MovePrevious オブジェクト変数.MoveFirst オブジェクト変数.MoveLast, 3行目【Dim レコード As New ADODB.Recordset】 Dim【デム】ステートメントでNew【ニュー】キーワード使用して外部データベースのレコードを参照するRecordset【レコードセット】オブジェクトのインスタンスを生成してオブジェクト変数「レコード」に格納します。, 4行目【Dim i As Long】 繰り返し処理の中でワークシートの行番号を格納する変数iを長整数型(Long)で宣言します。, 5行目~7行目【コネクション.Open ConnectionString:= _ “Provider=Microsoft.ACE.OLEDB.12.0;” & _ “Data Source=C:¥Users¥Desktop¥Database1.accdb;”】 Connection【コネクション】オブジェクトのOpen【オープン】メソッドを使用して外部データベースの接続をします。, 8行目【レコード.Open Source:=”商品マスター”, ActiveConnection:=コネクション】 Recordset【レコードセット】オブジェクトのOpen【オープン】メソッドを使用して外部データベースのレコードを参照します。, 10行目【Do Until レコード.EOF】 Do Loop【ドウ ループ】 ステートメントを使用して繰り返し処理の始まりです。繰り返しの条件をUntil【アンティル】の「~ではない間」に設定してEOF【エンドオブフィールド】プロパティがTrueではない間(外部データベースの最後のレコードまでの間)繰り返す条件を設定します。, 11行目【Cells(i, 1).Value = レコード.Fields(“商品名”).Value】 1列目の変数i行目のセルにValue【バリュー】プロパティで取得した外部データベースの「商品名」フィールドの値を代入します。, 12行目【レコード.MoveNext】 Recordset【レコードセット】オブジェクトMoveNext【ムーブネクスト】メソッドを使用して外部データベースのカーソルの位置を次のレコードに移します。, 13行目【i = i + 1】 セルの行番号が格納されている変数iに1を加算してセルの次の行を参照する準備をします。, 14行目【Loop】 10行目からここまでの処理を外部データベースのレコードの数(EOFがTrueになるまで)繰り返してワークシートに「商品名」フィールドのデータを代入します。, 15行目【レコード.Close: Set レコード = Nothing】 Recordset【レコードセット】オブジェクトのClose【クローズ】メソッドでレコードの参照を切断し、Nothing【ナッシング】を代入してメモリー領域を解放します。, 16行目【コネクション.Close: Set コネクション= Nothing】 Connection【コネクション】オブジェクトのClose【クローズ】メソッドで外部データベースの接続を切断し、Nothing【ナッシング】を代入してメモリー領域を解放します。, 以上で、ADOで外部データベースの特定フィールドのデータを取得する方法についての解説を終了します。ありがとうございました。, 外部データベースの特定のフィールドを表すField【フィールド】オブジェクトを指定します。, 外部データのレコードを表すRecordset【レコードセット】オブジェクトのインスタンスが格納されている, 外部データのレコードを表すRecordset【レコードセット】オブジェクトのインスタンスが格納されているオブジェクト変数を指定します。, 8行目【レコード.Open Source:=”商品マスター”, ActiveConnection:=コネクション】, 11行目【Cells(i, 1).Value = レコード.Fields(“商品名”).Value】.