記事内に商品プロモーションを含む場合がありますAccessから帳票を出力する一番一般的な方法は、Accessのレポートを使う方法です。この方法の弱点はレポートの細かい編集が面倒だという点と、出力した形で保存できないという点です。(PDF形式で出力すれば保存は可能ですが・・・)このため、AccessからExcelファイル形式で帳票を出力したいというニーズはかなり多くあります。今日はAccessからVBAを使ってExcelファイルへ帳票ファイルを出力する方法をご紹介します。個人の環境下で検証しておりますのでお使いの環境やデータによって正常に動作しない恐れもあります。サンプルはご自由にお使いいただいて結構ですが自己責任でご利用をお願いいたします。AccessからExcelへファイルを出力する方法VBAを使ってACCESSからEXCELにファイル出力する方法はいくつかあります。用途に応じて使い分けて使ってください。細かい設定が可能な順1行ずつデータ加工>レコードセット貼り付け>エクスポートスポンサーリンクAccessのエクスポートを利用して出力する一番簡単な方法です。ACCESSのエクスポート機能を使って所定のファイルに出力します。不要の場合はFalse第6引数インポートのときのみシート名を指定します。エクスポート時は指定不要ただし、エクスポートする対象として指定できるのは、テーブル名またはクエリー名です。このため、何らかの条件を指定してエクスポートしたい場合は、予めクエリーに条件値をセットしておく必要があります。※一旦ワークテーブルに出力してからエクスポートする方法もあります。出力するだけなのでファイルの体裁を整えるような細かな制御はできません。スポンサーリンクレコードセットをEXCELファイルに貼り付けるこちらは取得したレコードセットの値をEXCELファイルに貼り付ける方法です。データをまとめて一覧形式で出力する場合はこの方法が便利です。処理の概要ADOのレコードセットをADOのCopyFromRecordsetメソッドを利用し、ワークシートの指定されたセルに貼り付けます。今回のサンプルプログラムはあらかじめ決められたファイル名でEXCELファイルを保存して終了します。出力先ファイル名ファイルのフォルダや先頭の文字列はcsOutPutFileNameとして事前に定義してあります。“C:\work\EXCEL出力”これにアンダーバー+今日の日付を追加する設定です。出力先:C:\work\EXCEL出力_yyyymmdd.xlsxフィールド名(見出し)出力CopyFromRecordsetメソッドはデータを出力するメソッドなので見出し行は含まれません。このため、見出し行は別途出力する必要があります。レコードセットのカラム数分ループしながら1行目に見出しとしてフィールド名をセットします。列幅自動調整おまけです。出力すると全項目の列幅が規定値になってしまい見づらいので、一気に列幅を調整できるEntireColumn.AutoFitを実行しています。スポンサーリンク体裁を整えたテンプレートファイルへデータを出力する新しいEXCELファイルではなく、あらかじめ用意したEXCELの雛形(テンプレート)にデータを出力することもできます。この方法の利点は体裁を整えた形に出力するので、出力後加工なしでお客様に提出したり印刷したりできる点です。Excelの雛形はできればテンプレート形式をおすすめします。xltmなど)テンプレート形式は通常のファイルとは異なり、開く操作をすると自分自身ではなく、そのコピーを開くようになっています。コピーされたファイル名には「テンプレート名1」や「テンプレート名2」といった形で自動的に数字が付き、そのまま保存操作をしても元のテンプレートに上書きしてしまうことがありません。ひな形であるファイルをうっかり上書きしてしまうといったミスを防ぐことができます。テンプレートファイルを作るまず「テンプレート.xltx(または.xltm)」ファイルを作成しましょう。(保存する際の拡張子を.xltxまたは.xltmにしてください。)デザインは自由に作成してください。先の「レコードセットをEXCELに貼り付ける」と異なる点は、出力先があらかじめ用意したEXCELのテンプレートファイルであるという点です。テンプレートはAccessファイルがあるフォルダと同じフォルダに用意しEXCEL起動時にテンプレートファイルを指定します。ヘッダーをテンプレートに記述しておけるのでレコードセットデータを貼り付けるだけです。テンプレートファイル名テンプレートファイル名はcsOutputTemplateとして事前に定義してあります。“テンプレート.xltx”Accessファイルのカレントフォルダ(Application.CurrentProject.Path)にテンプレートファイルが存在しない場合はエラーとなります。フィールド名(見出し)今回はテンプレートの1行目に見出しを記述していますので、2行目からデータを貼り付けます。レコードセットの取得フィールドとテンプレートの見出しフィールドは完全一致している必要があります。CopyFromRecordsetメソッドを利用する場合はレコードセットを取得する際にテンプレートと合わせて置きましょう。スポンサーリンク1行ずつデータを加工しながら出力するこれまでCopyFromRecordsetメソッドを使ってレコードセットの全てのデータを所定の位置に出力する方法をご紹介してきました。実際はレコードセットのデータによって出力を出し分けたり、もっと細かい処理が必要な場合もあります。いった場合は、以下のようにレコードセットを1行ずつ処理しながら所定のセルに値をセットすることもできます。MEアズビーパートナーズプログラマー→社内SE→SIerのお仕事をしています。メーカー勤務を経て、中小企業の社内SE、フリーランスなど様々な形態で働いてきました。業務上生まれた困った...を解決してきたTipsを備忘録も兼ねて公開しています。困っている誰かのお役に立てれば幸いです。アズビーパートナーズアズビーパートナーズご存知の通り、Accessでテキストを格納するフィールドの型は2種類あります。テキスト型とメモ型です。アズビーパートナーズアズビーパートナーズAccessにExcelファイル・CSVファイルからデータをインポートする際は、インポートするデータの形式をフィールド毎に指定することができます。13最近の投稿AccessからVBAでCSVファイルエクスポート3027:データベースまたはオブジェクトは読み取り専用なので、更新できません。viewスポンサーサイトPR私も愛用中!家計費と確定申告が必要なものを一緒に管理できて超便利です🎵HOME知識ベースAccessAccessからVBAでEXCELへ帳票出力するアズビーパートナーズとは?社内SE歴10年以上。これまでに培った業務効率化や技術のノウハウを備忘録もかねて公開中です!小さな業務改善が大きな効率化につながることも多々あります。参考にされてくださいね!ご質問等ありましたら気軽にお問合せください。アズビーパートナーズ。