#432 | Excelセルへ個別出力する基本パターン | VBA | |
Accessでは、エクスポートの機能やOffice Linksの機能を使うことによって、テーブルやクエリのデータをExcelのワークシートとして出力することができます。しかし、Excelの特定のセルをめがけてデータを当てはめていきたいときや、セルの書式設定などのExcel上の操作を行うには、VBAを使ってExcelオブジェクトを操作する必要があります。 ExcelにもVBAがあり、Excel上の細かな操作が可能となっています。そのExcel VBAのコードをAccess VBAから実行することによって、Accessから細かいExcelの操作が実現できます。 ここでは、そのもっとも基本的なパターンとして、テーブルのデータをそのままExcelのワークシート上に展開する方法を例示します。 以下のコードを実行することによって、Excelが起動され、新しいブックのワークシートにテーブルのフィールド名と全レコードのデータが出力されます。With xls〜End Withで囲まれた部分は基本的にExcel VBAのコードが中心となっています。ここにさまざまなExcel VBAのコードを応用していけば、より細かい処理も可能となります(セル書式の設定などは当然のことながら、ブック全体の保存などの処理も必要であればここに記述します)。 Dim dbs As Database Dim rst As Recordset Dim intRow As Integer Dim intCell As Integer Dim xls As Object '仕入先テーブルを開く Set dbs = CurrentDb Set rst = dbs.OpenRecordset("仕入先") 'Excelオブジェクトを生成 Set xls = CreateObject("Excel.Application") With xls '画面の再描画を抑止 .ScreenUpdating = False '新しいブックを追加 .workbooks.Add '1行目に列見出し(フィールド名)をExcelに出力 intRow = 1 For intCell = 1 To rst.Fields.Count .Cells(intRow, intCell).Value = rst.Fields(intCell - 1).Name Next intCell '各レコードをExcelに出力 intRow = 2 Do Until rst.EOF For intCell = 1 To rst.Fields.Count .Cells(intRow, intCell).Value = rst.Fields(intCell - 1) Next intCell intRow = intRow + 1 rst.MoveNext Loop rst.Close '列幅のジャストフィット .Cells.Select .Cells.EntireColumn.AutoFit 'A1セルだけを選択状態にする .Range("A1").Select '画面の再描画を元に戻す .ScreenUpdating = True 'Excelを可視状態にする .Visible = True End With Set xls = Nothing 実行結果の例: 注意事項:
|
|||
|
Copyright © T'sWare All rights reserved |