SQL文を使って抽出を行う
Sub 抽出2()
'SQL文で抽出
Dim myCon As New ADODB.Connection, myRS As New ADODB.Recordset, FileName As String
Dim mySQLArray(2) As String, i As Integer
FileName = ThisWorkbook.Path & "\xls\DataBook.xls"
myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;" & _
"Data Source=" & FileName
'SQL文で記した抽出条件
mySQLArray(0) = "select * from [伝票一覧$] where 担当者 ='星野';"
mySQLArray(1) = "select * from [社員] where 所属 ='営業1課';"
mySQLArray(2) = "SELECT 伝票メモ.伝票No,商品.商品名,伝票メモ.販売数,商品.商品単価 " & _
"FROM 伝票メモ INNER JOIN 商品 ON 伝票メモ.商品ID = 商品.商品ID " & _
"ORDER BY 伝票メモ.伝票No;"
'Recordset オブジェクトに「伝票一覧」シートの内容を読み込む
For i = 0 To UBound(mySQLArray)
'SQLステートメントを使用してRecordset オブジェクトを開く
myRS.Open mySQLArray(i), myCon
'シートごとに抽出内容を転記
Worksheets(i + 1).Range("A1").CopyFromRecordset myRS
'別の内容を扱うのでRecordset オブジェクトをいったん閉じる
myRS.Close
Next
Set myRS = Nothing
myCon.Close: Set myCon = Nothing
End Sub
◆Sheet1

◆Sheet2

◆Sheet3
SQL文を使用すれば、高度な抽出条件もコード内で動的に作成することが可能。
AuroFilter メソッドやAdvancedFilter メソッドではできなかった「結合」の処理が簡単にできる。
