【VBA】Accessからデータを取得(SQLの基礎)~VBA100本ノック_96~

#VBA100本ノック 96本目
DB1.accdbから、以下の出力項目と抽出条件で
データを取得し、シートに出力する。
■出力項目
取引先CD,取引先名,商品CD,商品名,単価,数量,金額
金額は単価*数量
■抽出条件
2021年以降(2021/01/01~)
金額が100万以上
※テーブルは画像とサンプルにて
※シートは任意
Option Explicit
Sub ノック96本目()
Dim adoCN As New ADODB.Connection '接続本体
Dim strDb As String
strDb = ThisWorkbook.Path & "\DB1.accdb" '絶対パスで指定
With adoCN
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strDb 'Access
.Open
End With
Dim ws As Worksheet: Set ws = Sheets("出力"): ws.Cells.Clear
Dim adoRS As ADODB.Recordset
Dim strSQL As String
strSQL = _
"SELECT T売上.取引先CD,M取引先.取引先名,T売上.商品CD,M商品.商品名,T売上.日付,T売上.単価,T売上.数量,T売上.数量*T売上.単価" & _
" FROM ((T売上 LEFT JOIN M取引先 ON T売上.取引先CD=M取引先.取引先CD)" & _
" LEFT JOIN M商品 ON T売上.商品CD=M商品.商品CD)" & _
" WHERE T売上.日付>=#2021/01/01# AND T売上.数量*T売上.単価>=100000"
Set adoRS = adoCN.Execute(strSQL)
Dim i As Long
For i = 0 To adoRS.Fields.Count - 1
Cells(1, i + 1) = adoRS.Fields(i).Name
Next i
ws.Range("A2").CopyFromRecordset adoRS
End Sub
◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
<ブログ、あとがたり>
wachi-yon.jp/vba100/096/
<動画の概要>
0:00 冒頭・問題確認
2:58 ADO(ActiveX Data Objects)を参照設定
4:42 接続先をDB1.accdbに設定
5:52 Recordsetを設定する
7:42 Recordsetの中身をシートへ出力する
9:22 SQLの基本① SelectとFrom
12:08 SQLの基本➁ Where
14:08 SQLの基本③ Left Join
16:32 フィールド名を出力する
<参考サイト>
Excelの神髄さん 「VBA100本ノック96本目」
excel-ubara.com/vba100/VBA100...
<Twitter>
/ wachi_yukkuri
<チャンネル紹介>
ExcelやVBA中心。時には真剣に、時には楽しく【ゆっくり動画】を作っています
/ @wachi-excel
<動画編集ソフト>
ゆっくりMovieMaker4
manjubox.net/ymm4/
<音楽・効果音>
甘茶の音楽工房 さん
amachamusic.chagasi.com/terms...
効果音ラボ さん
soundeffect-lab.info/sound/an...
<今ここで修行中>
侍テラコヤ
af.moshimo.com/af/c/click?a_i...
↑クーポン(WACHI30)
#VBA
#ゆっくり動画

Пікірлер: 2

  • @hp365
    @hp365 Жыл бұрын

    ありがとうございます。よくわかりました。ちょうど似たようなことをやろうと思ってたところなんですよ。活用させていただきます。

  • @dill-mame
    @dill-mame Жыл бұрын

    accessは見よう見まねのデザインビューで組んでてSQL文からは目を逸らしてたけどこうやってきくとおもしろいなぁ… 抽出元が変わったら接続できなくなって困ってるけど、この動画きっかけにちょっとだけ原因わかったかもしれない気がする!

Келесі