ExcelデータをAccess VBAを使い、読み込んでテーブルに溜め込んでいます。
問題が1つあり、Excelのデータは他のシステムによって自動で作られています。
このExcelデータは1行目に見出しがあります。この見出しの列が時々追加されたり、削除さたりします。
例えば、下記の2列があるとします。読み込みたいのはID,NAMEのみです。
ID,NAME
この2列が固定であれば、問題ありません。しかし、時々、
ID,SEIBETU,NAME
と、SEIBETUという項目が追加されたりします。そうすると、Access VBAで読み取ろうとするとエラーが出ます(プログラムの修正をすればいいのですが)。
こういった問題を解決するには、何かいい方法はあるでしょうか?Accessでやっていますが、VB.NET、SQL Serverで解決できるなら、そちらを勉強して解決したいと思います。
よろしくお願いします。
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メソッド等を
使用して当該ファイルへのリンクを行うコードを作成すれば、
一応対応は可能かと思います。
No.1
- 回答日時:
・運用として、ID、NAME以外の列は削除した形でVBA作業へ引き渡す。
・ID、NAMEという名前が固定ならば、VBAを修正し、ID、NAMEの列を導き出して、その列を処理する
ようにする。
・「他のシステム」が、ID、NAMEしか出力しないように修正する。
処理するソフトウェアやDBがどうのこうのという解決法は無いと思います。
仕組みのインターフェースが統一されていないことが問題ならば、検討すべきはソフトウェアではなく
そのインターフェース、または回避ルートです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) accessでexcelを読み込む時のデータ型 1 2022/03/28 19:45
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- JavaScript gasについて 1 2022/05/31 21:51
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- Access(アクセス) accessデータを指定したExcel、そして指定したセルへエクスポートするaccess VBAコー 2 2023/05/17 17:02
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
accessテーブル作成クエリを実...
-
SI Object Browserのテーブルス...
-
UNIONなどで複数のテーブルから...
-
Accessにインポートした複数の...
-
クエリのキャンセルがいつにな...
-
VIEWしか読み取れないユーザの...
-
テーブル作成クエリで新テーブ...
-
ACCESS-リンクテーブルの設定で...
-
IDENTITY列の複数テーブルへのI...
-
SQLスクリプトを自動生成する方法
-
DBのCreate文スクリプト作成に...
-
レプリケーションしているテー...
-
あるテーブルのデータを追加、...
-
ACCESS97で テーブルの更新に...
-
ユニオンクエリの結果をテーブ...
-
アクセス97のリレーションシ...
-
位置を指定してフィールドを追...
-
重複するレコードに対しフラグ...
-
Access のリレーションシップで...
-
エクセルでテーブルの最終行が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでテーブルの最終行が...
-
accessテーブル作成クエリを実...
-
クエリのキャンセルがいつにな...
-
ユニオンクエリの結果をテーブ...
-
SI Object Browserのテーブルス...
-
UNIONなどで複数のテーブルから...
-
あるテーブルのデータを追加、...
-
ストアドをまたがるローカル一...
-
Accessにインポートした複数の...
-
コンボボックスで入力したもの...
-
列サイズ変更時、DB停止は必要?
-
SQLサーバーのテーブルの値...
-
Access のリレーションシップで...
-
レプリケーションしているテー...
-
位置を指定してフィールドを追...
-
SQLスクリプトを自動生成する方法
-
テーブル作成クエリで新テーブ...
-
ADOでSeekメッソッドが使えませ...
-
excel テーブル
-
VIEWしか読み取れないユーザの...
おすすめ情報