● 概要 ●
AccessのテーブルのデータをExcelシートに出力します。
ADOではDAOのようにCopyFromRecordsetメソッドが使えないため、Recordsetの内容を一旦配列に格納した後にEccelのセルに代入していきます。
ここでは「Northwind.mdb」の「都道府県」テーブルをExcelファイル「都道府県.xls」の「sheet1」に格納しています。
● サンプルプログラム ●
Private Sub ExportExcel_ADO()
Dim cn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim objExcel As Excel.Application
Dim data(50, 2) As Variant
Dim datanum As Integer
Dim i As Integer
Set cn = New ADODB.Connection
cn.ConnectionString = _
"Provider=microsoft.jet.oledb.4.0;" & _
"Data Source=D:\Northwind.mdb"
cn.Open
Set rst = New ADODB.Recordset
rst.Source = "都道府県"
rst.ActiveConnection = cn
rst.CursorType = adOpenStatic
rst.Open
datanum = rst.RecordCount
For i = 1 To datanum
data(i, 1) = rst![トドウフケン]
data(i, 2) = rst![都道府県]
rst.MoveNext
Next i
Set objExcel = New Excel.Application
objExcel.Workbooks.Open ("d:\都道府県.xls")
objExcel.Worksheets("Sheet1").Select
For i = 1 To datanum
objExcel.Cells(i, 1) = data(i, 1)
objExcel.Cells(i, 2) = data(i, 2)
Next i
objExcel.Quit
rst.Close
cn.Close
Set rst = Nothing
Set cn = Nothing
Set objExcel = Nothing
MsgBox "終了"
End Sub
● 動作確認 ●
Excelファイル「都道府県.xls」のsheet1に「都道府県」テーブルのデータがコピーされていることを確認してください。
● 補足 ●
ここで行った方法以外にもDocmdオブジェクトを用いても可能です。
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "都道府県" _, "d:\都道府県.xls"