サイタパソコン教室・IT資格マイクロソフトOffice(オフィス)使い方講座Access 東京 AccessPro大親切スクール レッスンノート フォームとクエリの連携、インポート、エクスポートの問題

フォームとクエリの連携、インポート、エクスポートの問題

Access(アクセス)使い方講座のレッスンノート

レッスンノートって?レッスンノートって?

現在Excelで扱っている大きなデータをAccessでスマートに抽出したいという課題です。
Excelなどから書き出された大量のテキストデータをAccessにインポートする場合、データ型と列ずれの問題を避けることができません。
今回のご相談では両方の問題が起きているとのことですので、Accessへのインポート方法についていくつか提案させていただきました。

 1. 文字列をダブルクォーテーションで囲んでいないタイプのCSVデータの場合は、インポート定義ファイルを作成する。
 2. 当該データをExcelに読み込んだ場合には列ずれはみられないということなので、そのExcelファイルをそのままリンク設定して扱う。

Excelセル内での擬似改行(Alt+Enter)はテキストに書き出すと正規の改行扱いとなり、そのためAccessへのインポートでは問題を引き起こします。今回は、最終的には再びExcelに書き出しを行うということですので、そのCSVデータがExcel由来のものなのであれば、Excelに読み込んだ上でAccessにリンクし、それを抽出作業にかけて再びExcelに書き出すということでうまくいくかもしれません。

通常、テキスト形式を介さないExcel-Access間でのデータのやりとりは、擬似改行があっても支障は起こりません。
このあたりは、実際のデータで試してみる必要がありますので、可能であれば列ずれを起こす部分を特定して、部分データをお持ちいただくのがよいと思います。

インポートにせよ、リンクにせよAccessに一度正しく取り込まれれば、今回ご要望の作業自体は難しいものではありません。
クエリの抽出条件にフォームコントロールの名前を適切に書き込んで、そのクエリをExcel書き出しに用いればよいでしょう。
フォームに置くテキストボックスを日付の抽出条件として使う場合には、テキストボックスの「書式」プロパティを適当な日付形式にしておけばOKです。

今回はExcelへのエクスポートまでは試すことができませんでしたが、ここも簡単にはいかないことが予想されます。
一つは、データが大量であるために、おそらくマクロアクションでのExcel出力(あるいは同じことですが、VBAでのTransferSpreadsheetメソッド)でのExcel変換はうまくいかないのではないでしょうか。
あるいは大量データであっても項目数が少なければ問題は起きないかもしれませんが、このコマンドは経験的に言ってかなり不完全なコマンドで信頼できません。VBAでの他の方法が必要になるかもしれないですね。

もう一つは、今回のようなデータ出力用のクエリが抽出条件を持っている場合は、そのままでは書き出しが行われず実行時にパラメータが出てしまうということが起こります。これへの対処も簡易な方法、由緒正しい方法などがありますので、その段階でまたご相談いただければと思います。

時間の関係で説明を省きましたが、フォームに作成した複数列表示のコンボボックスの扱いも実務で役立つものですので、次の機会に学ばれることをお勧めします。
このレッスンノートを書いたコーチ

重要な操作を効率よくレクチャー。データベースの基礎~VBAまで

新着レッスンノート

受講のために遠くから来京していただきありがとうございます。東京はまだコロナが蔓延している状況ですので、レッスン受講にも気後れされたことと思います。 今回は受注管理システムのフォーム作成の続きを行いました。 受注伝票のヘッダー部分に表示する「得意先」などをマスタテーブルから引用するコンボ...

名簿を管理するシステム作成の続きです。FileMakerProからデータを移行し、その後ご自身でカード型フォームにコンボボックスを置いて検索する仕組みを作成して、すでに現場で運用を始めているとのことです。機能としてはまだ不十分なものの実際に使えているということです! 今回はDatedif...

受注、加工、在庫を管理している現行システムの代わりとなるものをAccessで作成したいとのご要望です。前回までのレッスンでクエリ操作の全般を終えていますので、今後はレッスンで学んできたことを確認しながら実際のシステムを作成していきたいと思います。 受注伝票に関係するテーブルを作成しました...

前回からリレーショナルなデータを扱う上で欠かせないデータ間の関係について学んできました。今回はやや難しい多対多結合を確認しました。 一対多関係では、マスタデータ同士での一対多、トランザクションデータ同士での一対多、マスタデータとトランザクションデータ間での一対多を確認しましたが、それと同...

期間が空きましたがレッスン再開です。前回までに主に1つのテーブルを対象としたクエリ操作を終えましたので、今回からは2つのテーブルを横につなぐ結合クエリのレッスンに入ります。 Accessでは操作する対象を意識することが理解の早道です。1つのテーブルを扱う、あるいは2つのテーブルを縦に結合...

レッスンノート ページ先頭へ