データを抽出する

データを抽出する

Sub SQLでデータ取得()
Dim myCon As New ADODB.Connection, myRS As New ADODB.Recordset
Dim mySrc As String, mySQL As String
Dim i As Integer, j As Integer

'接続先データベース
mySrc = ThisWorkbook.Path & "\mdb\4-sampleDB.mdb"
'実行するSQLが記述してあるセル
mySQL = Range("J1")

'接続
myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=" & mySrc

'レコードセットを取得後、フィールドを含めて転記
With myRS
  .Open mySQL, myCon
  For i = 0 To .Fields.Count - 1
    Range("A1").Offset(0, i) = .Fields(i).Name
  Next
Range("A2").CopyFromRecordset myRS
End With

myRS.Close: Set myRS = Nothing
myCon.Close: Set myCon = Nothing

End Sub

SELECT命令を使用する
SELECT 取り出したいフィールド FROM テーブル;

以下のSQLは上記リストを使用してデータを操作する。
セル「J1番地」にSQLを記述して、実行。

取り出し元テーブル

すべてのフィールドを取り出す
select * from 社員;

任意のフィールドのみを取り出す
select 氏名,年齢 from 社員;

フィールドの順番を並べ替えて抽出する
select 氏名,フリガナ,年齢,所属,社員ID from 社員;