• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelをVBAで読み込むと)

ExcelのデータをVBAで読み込む際の問題点と解決方法

このQ&Aのポイント
  • ExcelデータをAccess VBAを使って読み込んでテーブルに溜め込んでいますが、時折列の追加や削除が行われるため、プログラム修正が必要となります。
  • この問題を解決するためには、Excelのデータの列数を事前に検知し、動的にテーブルのスキーマを変更する方法が有効です。
  • Accessでの対応に加えて、VB.NETやSQL Serverを学び、これらのツールを使用して解決することも検討できます。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

当該Excelファイルの保存場所とファイル名が常に同じなら、 Excelファイル自体をリンクテーブルとしてはいかがでしょうか。 そうしてしまえば、後はそのリンクテーブルから「ID」と「NAME」 フィールドのみを指定した追加クエリを作成することで、 それ以外のフィールドを一切無視して、データを取り込むことが できると思います。 【Excelからのリンクテーブルの作成方法】 <Access2003以前> 1)データベース ウィンドウ(テーブルなどの一覧が表示される  画面)を右クリック 2)「テーブルのリンク」を選択して、『リンク』ダイアログを開く 3)同ダイアログ下方にある『ファイルの種類(T)』のコンボボックス  で、「Microsoft Excel」を選択 4)当該ファイルを指定したら、『リンク(K)』ボタンをクリック <Access2007以降> 1)『外部データ』リボンを選択 2)『インポート』グループ(?)内にある『Excel』ボタンをクリック 3)『外部データの取り込み - Excelワークシート』ダイアログが  開くので、『ファイル名(F)』に当該ファイルを指定  (アドレスを貼り付けるか、『参照(R)』ボタンで指定) 4)その下にあるオプションボタンから、『リンク テーブルを作成して  ソース データにリンクする(L)』を選択 以上の操作を行うと、ウィザードが起動しますので、必要な 設定を指定すれば、Excelファイルへのリンクテーブルが作成 できます。 このリンクテーブルは(他社特許の関係で)参照専用となって いますが(古いバージョンだと編集可のままかもしれません)、 それ以外は通常のテーブルと同様に扱えますので、これを 元に追加クエリまたはテーブル作成クエリを作れば、実質的に 「Excelからのインポート」と同様のことが行えます。 ※Excelファイルの保存先やファイル名が一定でない場合も、  VBAでFileDialogオブジェクトやTransferDatabaseメソッド等を  使用して当該ファイルへのリンクを行うコードを作成すれば、  一応対応は可能かと思います。

mellow91
質問者

お礼

なるほど、そういう手があるのですか。とても勉強になりました。ご回答ありがとうございました!!

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

・運用として、ID、NAME以外の列は削除した形でVBA作業へ引き渡す。 ・ID、NAMEという名前が固定ならば、VBAを修正し、ID、NAMEの列を導き出して、その列を処理する  ようにする。 ・「他のシステム」が、ID、NAMEしか出力しないように修正する。 処理するソフトウェアやDBがどうのこうのという解決法は無いと思います。 仕組みのインターフェースが統一されていないことが問題ならば、検討すべきはソフトウェアではなく そのインターフェース、または回避ルートです。

mellow91
質問者

お礼

ご回答ありがとうございます!!やはり、列などを削除して統一するしかありませんか。わかりました、感謝です!!

すると、全ての回答が全文表示されます。

関連するQ&A