ACCESSでCSVインポート後、空のフィールドを省いた新規テーブル作成方法

Microsoft Access

ACCESSでCSVファイルをインポートした後、フィールド内にデータが全くない列を省いて新しいテーブルを作成したい場合があります。インポートされるデータによって空のフィールドが変わる場合でも、VBAやクエリを活用することで自動的に不要列を除外できます。本記事ではその手順と実装例を解説します。

空フィールドの判定方法

ACCESSでは、各フィールドのデータ数をDCount関数で取得し、0件であれば空と判定できます。これをループ処理で全フィールドに適用すると、どの列を除外するかを自動で判断できます。

例:DCount(“FieldName”,”TableName”) = 0でそのフィールドが空かどうかをチェック可能です。

VBAでの自動テーブル作成

VBAを用いて新規テーブルを作成する方法では、既存テーブルのフィールドを走査し、データがあるフィールドのみを新しいテーブルに追加します。

基本的な手順は以下の通りです。

  • 既存テーブルのフィールドをループ
  • 各フィールドのDCountでデータ件数を取得
  • 0件でなければ、新規テーブルにそのフィールドを作成

クエリを使った簡易方法

VBAを使わずにクエリで対応する場合、SELECT文で条件付きでフィールドを抽出することはできますが、完全に自動で列を省くのは難しいため、VBAと組み合わせるのが現実的です。VBAで列のリストを作成し、動的SQLを組んでSELECT INTO文で新規テーブルを生成する方法が有効です。

例:Dim strSQL As String: strSQL = “SELECT Field1, Field2 INTO NewTable FROM OldTable” のように、必要なフィールドのみ指定してテーブル作成。

実用例と注意点

実際の運用では、CSVをインポート後、VBAを実行して自動で空フィールドを除外し、新規テーブルを作成します。この方法により、インポートするCSVの内容が毎回変わっても対応可能です。

注意点として、空かどうかの判定はNULLや空文字も考慮する必要があります。また、新規テーブルのデータ型は元テーブルと一致させるか、適切に設定してください。

まとめ

ACCESSでCSVをインポートした後、空フィールドを省いた新規テーブルを作成するには、VBAでフィールドを走査し、データのある列のみを新規テーブルに追加する方法が最も柔軟です。クエリだけでは完全自動化は難しいため、VBAとの組み合わせで、インポートデータに応じたテーブル作成を効率的に行うことができます。

コメント

タイトルとURLをコピーしました