即効テクニック

ファイル操作・他アプリケーションとの連携

Excelへの出力(ADO)

(Access 97)
● 概要 ●
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"