#686 | レコードセットの内容をそのままExcelのシートに出力する方法 | VBA | |
ADO(ActiveX Data Objects)の『CopyFromRecordset』メソッドを利用すると、現在開いているRecordsetオブジェクトに含まれるレコード・フィールドのデータを一括して(ひとつの命令で)Excelのワークシートに出力することができます。 次の例では、「得意先」という名前のテーブルを開き、その内容をExcelのワークシートに出力しています。 【注】このプログラムを実行するには、VBEの[ツール]-[参照設定]メニューにおいて、「Microsoft ActiveX Data Objects 6.0 Library」などにチェックマークを付け、参照ライブラリとして追加しておく必要があります。・・・・これはAccessから外部プログラムを呼び出して利用するという設定です
Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim xls As Object '得意先テーブルを開く Set cnn = CurrentProject.Connection Set rst = New ADODB.Recordset rst.Open "得意先", cnn, adOpenKeyset, adLockOptimistic, adCmdTable 'Excelオブジェクトを生成 Set xls = CreateObject("Excel.Application") With xls '新しいブックを追加 .Workbooks.Add '---- 例1 ---- '1行目の1列目からレコードセットを出力 .Cells(1, 1).CopyFromRecordset rst '---- 例2 ---- 'ワークシートを最後尾に追加 .Worksheets.Add after:=.Worksheets(.Worksheets.Count) 'レコードセットを先頭レコードに戻す rst.MoveFirst 'B2セルからレコードセットを出力 .Range("B2").CopyFromRecordset rst '---- 例3 ---- .Worksheets.Add after:=.Worksheets(.Worksheets.Count) rst.MoveFirst '先頭から5レコードだけ出力 .Cells(1, 1).CopyFromRecordset rst, 5 '---- 例4 ---- .Worksheets.Add after:=.Worksheets(.Worksheets.Count) rst.MoveFirst '先頭から4フィールドだけ出力 .Cells(1, 1).CopyFromRecordset rst, , 4 'Excelを可視状態にする .Visible = True End With Set xls = Nothing rst.Close: Set rst = Nothing: Set cnn = Nothing 【プログラムの説明】
補足
|
|||
|
Copyright © T'sWare All rights reserved |