プロが教えるわが家の防犯対策術!

ExcelデータをAccess VBAを使い、読み込んでテーブルに溜め込んでいます。

問題が1つあり、Excelのデータは他のシステムによって自動で作られています。

このExcelデータは1行目に見出しがあります。この見出しの列が時々追加されたり、削除さたりします。

例えば、下記の2列があるとします。読み込みたいのはID,NAMEのみです。

ID,NAME

この2列が固定であれば、問題ありません。しかし、時々、

ID,SEIBETU,NAME

と、SEIBETUという項目が追加されたりします。そうすると、Access VBAで読み取ろうとするとエラーが出ます(プログラムの修正をすればいいのですが)。

こういった問題を解決するには、何かいい方法はあるでしょうか?Accessでやっていますが、VB.NET、SQL Serverで解決できるなら、そちらを勉強して解決したいと思います。

よろしくお願いします。

A 回答 (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メソッド等を
 使用して当該ファイルへのリンクを行うコードを作成すれば、
 一応対応は可能かと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/12/21 00:19

・運用として、ID、NAME以外の列は削除した形でVBA作業へ引き渡す。


・ID、NAMEという名前が固定ならば、VBAを修正し、ID、NAMEの列を導き出して、その列を処理する
 ようにする。
・「他のシステム」が、ID、NAMEしか出力しないように修正する。

処理するソフトウェアやDBがどうのこうのという解決法は無いと思います。
仕組みのインターフェースが統一されていないことが問題ならば、検討すべきはソフトウェアではなく
そのインターフェース、または回避ルートです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/12/19 02:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す