web-dev-qa-db-ja.com

VBAを介して同じディレクトリ内のExcelスプレッドシートにMS Accessテーブルをエクスポートする

Excelにエクスポートできるようにするアクセスデータベース内の2つのテーブル

テーブルを開いて、[ファイル]-> [エクスポート]を実行し、形式を選択してファイル名を入力することで実行できます。

ただし、この方法では、ユーザーが実際に名前を入力する必要があるため、ファイルの名前を変更したり、間違った形式または間違った場所に保存したりする余地があります。また、2つのテーブルを2つの別々のワークブックにエクスポートする必要があります。

私ができるようにしたいのは、1つのテーブルを1つのワークシートに、もう1つのテーブルを別のワークシートに自動的にエクスポートするフォーム上のボタン、両方の同じExcelワークブック

それらを同じワークブックに入れることができない場合、それは問題ありません。アクセスデータベースが保存されているのと同じディレクトリに自動的にエクスポートするだけです。

方法がわかっている場合は、日付を含めるように名前をカスタマイズすることもできます。そうすれば、ディレクトリにも履歴のエクスポートができます。何かアドバイス?

22
Matt

VBAを使用して、AccessデータベーステーブルをExcelブックのワークシートとしてエクスポートできます。

Accessデータベースのパスを取得するには、_CurrentProject.Path_プロパティを使用します。

現在の日付でExcelワークブックファイルに名前を付けるには、Format(Date, "yyyyMMdd")メソッドを使用します。

最後に、テーブルをワークシートとしてエクスポートするには、_DoCmd.TransferSpreadsheet_メソッドを使用します。

例:

_Dim outputFileName As String
outputFileName = CurrentProject.Path & "\Export_" & Format(Date, "yyyyMMdd") & ".xls"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Table1", outputFileName , True
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Table2", outputFileName , True
_

これにより、Table1とTable2の両方が同じワークブックに出力されます。

HTH

39

ローレンスはあなたに良い答えを与えました。ただし、Excelのエクスポート先をより詳細に制御したい場合は、 モジュール:Excelオートメーションのサンプル -遅いセルごと モジュール:オートメーションを使用してExcelにレコードを転送 を参照してください行2から始まるレコードセットをエクスポートしたり、行1にカスタムテキストを挿入したり、必要なカスタム書式を設定したりできます。

7
Tony Toews