|

|
|
 |
5.5 テーブルのデータをワークブックへ出力 |
 |
|
|
|
|
|
テーブルに保存されているデータを、ADOを使って開いたワークシートやCSVファイルへ出力する例です。
元のデータを集計・編集・データの絞り込みたいとき、シート上の既存のデータへ追加したときなど、DoCmd.TransferSpreadsheetで対応しきれないときはこの方法がオススメです。
|
|
|
|
|
|
|
|
|
|
次のプログラム例は、Accessのテーブルのデータをワークブックへ出力する処理の例です。コネクション情報(ADODB.Connection)を2種類使用しているのがポイントで、一つはMDBを扱うためのコネクション(objMDBCon)、もう一つはワークブックを扱うためのコネクション(objXLSCon)です。
最初に、MDBのコネクション情報(objMDBCon)を使ってレコードセットを作成します。この部分が、テーブルから情報を取り出す処理です。もし、取り出し対象がクエリのときは、SQLのFROM句へクエリ名を指定しましょう。
次に、ワークブックへの出力です。取り出したテーブルの情報(objRS)を使ってSQL(INSERT命令)を組み立て、このSQLをワークブックのコネクションを使って実行(Execute)します。あとは、SQLの組み立て〜SQLの実行を、レコードセットがカラになるまで繰り返せばOK!
ちなみに、各コネクション情報の作成を変えると、SQL ServerのデータをCSVへ出力したり、ExcelのデータをMDBへ取り込んだりなど、いろいろ応用できます。
Sub MDBtoWorkbook()
'Access VBA Tips
'5.5 テーブルのデータをワークブックへ出力
Dim objMDBCon As adodb.Connection
Dim objXLSCON As New adodb.Connection
Dim objRS As adodb.Recordset
Dim strSQL As String
'MDB用コネクション作成
Set objMDBCon = Application.CurrentProject.Connection
'ワークブック用コネクション作成(ReadOnly=0は更新モード)
objXLSCON.Open "Driver={Microsoft Excel Driver (*.xls)}; " & _
"DBQ=c:\happy\ADR_BOOK.xls;" & _
"ReadOnly=0"
'レコードセットの作成(テーブルのデータを取り出す)
Set objRS = objMDBCon.Execute("select 漢字氏名" & _
" ,カナ氏名" & _
" ,性別コード" & _
" ,生年月日" & _
" from アドレス帳テーブル")
'レコードセットがカラになるまで繰り返します
Do Until objRS.EOF = True
'追加用のSQLを組み立てます
strSQL = vbNullString
strSQL = strSQL & "insert into [Sheet1$]"
strSQL = strSQL & " (漢字氏名"
strSQL = strSQL & " ,カナ氏名"
strSQL = strSQL & " ,性別コード"
strSQL = strSQL & " ,生年月日 )"
strSQL = strSQL & "values ('" & objRS("漢字氏名") & "'"
strSQL = strSQL & " ,'" & objRS("カナ氏名") & "'"
strSQL = strSQL & " ," & objRS("性別コード")
strSQL = strSQL & " ,#" & objRS("生年月日") & "#)"
'ワークブックへデータを追加
'(ワークブックのコネクションを使ってSQLを実行します)
objXLSCON.Execute (strSQL)
'次のレコードへ進みます
objRS.MoveNext
Loop
'レコードセットのクローズ
objRS.Close
'コネクションのクローズ
objMDBCon.Close
objXLSCON.Close
'オブジェクトの破棄
Set objRS = Nothing
Set objMDBCon = Nothing
Set objXLSCON = Nothing
End Sub
|
|
|
|
|
|