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 メソッドではできなかった「結合」の処理が簡単にできる。