即効テクニック |
● 概要 ● 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"