pickup

目次

Excelで変数を利用して、お好みのデータを抽出

こんにちは。伊川(@naonaoke)です。

今回は、ACCESSからExcelへ、お好みのデータを転送する方法を紹介します。

問題提起

阿久 世子男(アク セスオ)は、上司から、ACCESSのデータをExcelへ転送できるように依頼を受けました。さらに、ACCESSから、様々なデータを取り込めるように支持を受けました。どうしたらいいだろうか?

ExcelとACCESSは仲良し

ExcelとACCESSは、VBAにおいて連携することができます。

この技を知っておくと、集計は本当に楽になります。


今回の上司の依頼は、MT_aaa MT_xxxというデータを状況によって取り込みたいという命令です。

この場合の解決策は、2通りです。

・データベースの分だけ、Excelを作成する。

今回は、MT_aaa MT_xxxと2つしかありません。

しかし、データベースが10個分あったら、10個のExcelを作成することになります。

現実的ではありません。

・テータベースを抽出するたびに、VBAのエディタを開いてコードを書き換える。

はっきり言って面倒です。

これも現実的ではありません。

変数を使う

結論から言いますと、変数を使うことで解決します。

変数に関しては、下記の記事を参照してください。

今回の取込にての注意点は下記の通りです。

事前設定 その1

VBAエディタの画面を開いて、「ツール」⇒「参照設定」を選択します。


Microsoft ActiveX Data Objects 6.1 Library

これを設定しないと、ExcelとACCESSの連携はできません。

事前設定 その2


ExcelとACCESSが必ず同一フォルダの、同一階層にあることが必要です。

同一フォルダの、同一階層にExcelのファイル、ACCESSのファイルが別々になると、伊川の提供するサンプルファイルは動きません。

事前設定 その3


コンボボックスを事前に設定しておきましょう。

http://keiyu.xyz/2019/09/26/excel%e3%81%ae%e9%80%a3%e5%8b%95%e3%83%97%e3%83%ab%e3%83%80%e3%82%a6%e3%83%b3%e3%81%ae%e4%bd%9c%e6%88%90/

転送のコード

 

Sub データ取り込み()

   Worksheets("取込").Range("A6:C20").Clear

  Dim con As New ADODB.Connection
  Dim rs As New ADODB.Recordset
  Dim conStr As String
  Dim a As String
  a = Range("A1")

  conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.Path & "\20191023.accdb"
  con.Open ConnectionString:=conStr
  rs.Open Source:=a, ActiveConnection:=con, _
    CursorType:=adOpenKeyset, LockType:=adLockOptimistic

Worksheets("取込").Range("A6").CopyFromRecordset Data:=rs
 
Worksheets("取込").Range("A5") = "ID"
Worksheets("取込").Range("B5") = "項目_1"
Worksheets("取込").Range("C5") = "項目_2"

 MsgBox "データ取込完了"

End Sub

今回のコードのポイント


この赤枠の中で、変数を設定しています。

この変数aが、MT_aaa MT_xxxに変化するわけです。

そうすると、データベース分のExcelを作成することや、データベースを変更するたびに、

VBAエディタを開いて、コードを修正する必要もありません。

これで、完璧です。

スポンサーリンク

まとめ

これは、動画を観ていただければわかるとおもいますが、もともとは競馬ネタです。

各競馬上のデータを取り込むために考えました。

大げさなことではなく、常に、ループ、変数を使って、VBAのコードを短く、わかりやすくしようと考えた結果です。

ぜひ、みなさんの業務に役立てて欲しいと思います。

いきなり、ACCESSへ転送するコードが出てきましたが、毎日更新しようとおもっています。

阿久 世子男(アク セスオ)の成長をみまもってください。

サンプルファイルNo20はです

スポンサーリンク

Twitterでフォローしよう

おすすめの記事