業務テクニックAccessはExcelと比較した場合、データの加工(クエリや大量のデータの処理、レポート機能)という点で、Excelよりも優れています。データ処理については速度面でも非常に有利です。一方でExcelの長所がそのままAccessの弱点になっています。縦横柔軟な表形式の文書の作成であったり、機能面での差として「クロス集計」に於いて、Excelでは出来てもAccessではできないものが存在していたりします(Accessでは列の要素は1個しか指定が出来ない)。クエリでは現場の要望の一部しか満たせない場合もあります(クエリ使うよりも、sumiufsのほうが手っ取り早かったり)そんなAccessですが、Excelを遠隔操作出来たりするので、流れ作業でExcelを操作してデータの出力が非常に便利です。今回はこの遠隔操作である「オートメーション」を見ていきたいと思っています。今回のAcccessアプリは普段使っているDAOではなく、ADOを用いてレコードデータを取得しています。そこで以下の手順で参照設定を追加しておかないとコードが動きません。今回もリボンを使ってるので、その為の参照設定も追加しておきます。Basic」を開きます。メニューより「ツール」⇒「参照設定」を開きます。Library」を見つけ出しチェックを入れます。Library」を見つけ出しチェックを入れます。この設定を加える事で、ADOでCopyFromRecordsetを利用する事が出来るようになります。今回のサンプルデータは、国土地理院の国土数値情報で配布されているGIS用のデータを加工して、Accessに取り込んであります。DBFファイルが本体で、LibreOfficeにて取り込み、CSVに変換した後、Accessへとインポート済みです。書き込み用に「緯度と経度」の列をカンマで連結させた列を追加したクエリを用意してあります。実際の書き込みでは、このクエリを出力先のExcelワークシートへと書き込みすることになります。"キャンセルされました。"テーブルデータの書き出しが完了しました。"キャンセルされました。"テーブルデータの書き出しが完了しました。Function起動すると、名前を付けて保存ダイアログが開き、ファイル名入力を促されます。テンプレートになるroadstation.xlsxがコピーされ開き、そこへCopyFromRecordsetにて一発書き込みをしています。書き込み元は「出力用クエリ」で、緯度経度を連結させた列を含めて必要なデータを書き込みしています。書き込み中は、再計算やアプリケーションの表示はさせない用に制御しているので、高速で書き込みが終わります。デスクトップフォルダのパスの取得や、Excel本体については、実行時バインディングにて処理をしているので、「参照設定」への追加は不要です。DAOであっても、CopyFromRecordsetは利用が可能です。CopyFromRecordsetの場合書き出し可能なデータ量に制限があるようです。Excelのメソッドを使って1行ずつ書き込み前項ではCopyFromRecordsetにてクエリのデータを所定のシートに対して、データを一括書き込みを行いました。CopyFromRecordsetの場合、クエリやテーブルをそのまま書き込むので、データの加工はVBA上ではなくクエリ上で完成させておく必要性があります。一方で、特定の項目の内容に応じて条件判定を行いデータをいろいろ加工したり追加したいようなケースの場合、事前にクエリやテーブルで対処しておくのは難しい事です。VBAを扱うように出来たら便利だなという事で以下のようなコードもサンプルに加えてあります。"キャンセルされました。"テーブルデータの書き出しが完了しました。"キャンセルされました。"テーブルデータの書き出しが完了しました。Function途中までは前項とほぼ同じルーチンになります。今回のルーチンはDAOで作業をしているので、このコード自体は追加の参照設定は必要ありません。VBA上で利用が可能になるので、利便性は向上します。複雑な条件判定などを事前にクエリ側で作るよりも、プロシージャ側で作り込める為、その後のメンテナンスなどを考えた場合、こちらのやり方のほうがメンテナンス性では有利だと思います。単純にデータの書き込みだけでなく、グラフの作成やピボットテーブルの作成、またはそれらの操作などもAccessからExcelのワークシートへ行えるので、この手法は手法で身につけて置くとあとで助かります。コメントデータの処理方法の詳細はこちらをご覧ください。Suite加入用プロモコード割引適用のページで以下のコードを適用Basic:L93LT9URV3P6TQRBusiness:U7XV3VW4RTQPPDK詳細はこちらのページより。technology.。