小さい会社の1人SEの開発記というか奮戦記

  1. Excel
  2. 3148 view

VBAでAccessのテーブルの内容を全てExcelに挿入する

まずは一番簡単な内容です。エクセルのVBAからアクセスの Northwind データーベースに接続し、テーブルのデータ全てをエクセルのワークシートに取り込みます。

条件整理

Accessファイル D:¥db¥NorthWind.accdb
インポート元 テーブル「Employees」
インポート先 Excelシート名「Sheet1」セルA5
処理 全件コピー

ExcelからAccessに接続するには事前準備が必要です。事前に「ExcelからVBAでデーターベースを使う準備」を参照しておいて下さい。

VBAでのデータ取り込み手順

一連の手順をまとめると以下となります。

  1. 変数の宣言
  2. データベースに接続
  3. 取得したデータをワークシートに挿入する
  4. データベースの接続を解除する

変数の宣言

Dim strfn As String ‘アクセスファイル名
Dim adocn As Object ‘ADOコネクションオブジェクト
Dim adors As Object ‘ADOレコードセットオブジェクト

参照 →「MSDN Connection オブジェクト
参照 →「MSDN Recordset オブジェクト

データベース接続

‘  アクセスファイル名
strfn = “D:¥db¥NorthWind.accdb”

‘  ADOコネクションオブジェクトを作成
Set adocn = CreateObject(“ADODB.Connection”) 

‘  Accessファイルに接続(アクセスに接続する場合の決まり文句だと思って下さい)
adocn.Open “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & strfn & “;”

‘  ADOレコードセットオブジェクトを作成
Set adors = CreateObject(“ADODB.Recordset”)

データをワークシートに挿入

‘  対象テーブルであるEmployeesをRecordSetへセット
adors.Open “Employees”, adocn 

‘  RecordSetへセットしたデータをセルA5に挿入
Range(“A5”).CopyFromRecordset adors

参照 →「MSDN Open メソッド

データベース接続解除

‘  レコードセットのクローズ
adors.Close

‘  コネクションのクローズ
adocn.Close

‘  オブジェクトの破棄
Set adors = Nothing
Set adocn = Nothing

まとめ

[ ボタン 1 ]をクリックするとセルA5にデータが挿入されます。

作成したVBAは以下の通りです。

Sub ボタン1_Click()

'   変数宣言
Dim strfn As String '  アクセスファイル名
Dim adocn As Object '  ADOコネクションオブジェクト
Dim adors As Object '  ADOレコードセットオブジェクト

'   アクセスファイル名
strfn = "D:\db\NorthWind.accdb"
 
'  データベース接続 
Set adocn = CreateObject("ADODB.Connection") 'ADOコネクションオブジェクトを作成
adocn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strfn & ";" 'Accessファイルに接続
Set adors = CreateObject("ADODB.Recordset") 'ADOレコードセットオブジェクトを作成
 
adors.Open "Employees", adocn '対象テーブルをレコードセットへ
Range("A5").CopyFromRecordset adors 'レコードセットのデータをセルA5に挿入

'  データベース接続解除 
adors.Close 'レコードセットのクローズ
adocn.Close 'コネクションのクローズ
 
Set adors = Nothing  'オブジェクトの破棄
Set adocn = Nothing
     
End Sub

おそらくVBAではデータベースからデータを取り込む最小プログラムだと思います。全ての基本になりますのでよく覚えておきましょう。

関連記事 →「ExcelからVBAでデーターベースを使う準備

Excelの最近記事

  1. 日本語をエンコードする【Excel VBA】

  2. 商品コードなど長い数値だけの文字列を指数表示させない【Excel VBA】

  3. VBAで改行を指定する【Excel】

  4. 入力規則のプルダウン連携【Excel】

  5. 最短手順で計算式を保護する【Excel】

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


お薦め書籍

最近の記事

  1. Access

    Accessの数値型ではまる・・・。
  2. Excel

    日本語をエンコードする【Excel VBA】
  3. Access

    クエリで日付から曜日を算出する。【Access】
  4. PCパーツ

    ASUS AMD Ryzen 4000 シリーズ搭載小型ベア…
  5. Microsoft365

    コンデジをTeamsのWebカメラに使う
  6. SQL Server

    SQL文で今日から7日前までを指定する