Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
項目が増減するエクセルファイルのインポート
投稿日時: 19/12/23 17:25:58
投稿者: マヨイ

ご覧頂きありがとうございます。
現在、他社から共有されるエクセルファイルをACCESSに取り込んで管理をしております。
そのエクセルファイルの項目が他社の都合で増えたり、減ったりします。(月一回程度)
現在
Docmd.TransferSpreadsheet acImport,10,"読み込み先テーブル","読み込むエクセルファイル",true,""
※別端末から手入力で転機しています。スペルミスはご了承ください。
でテーブルへ読み込んでいます。現在は項目がわかるたびにテーブルの項目を合わせていますが
今後ACCESSをしようした事のない人へ引き継がなくてはいけないため複雑な処理をさせたなくないと
思っています。
テーブルの項目を変えたりしなくても自動で取り込んでくれる方法はないでしょうか?
以下エクセルの例です↓
工事名   工事番号   工事予定日
道路工事  1111-1111   10月1日
水道工事  2222-1111   11月1日
だったものが翌月には
工事名   工事番号   工事予定日    工事理由
道路工事  1111-1111   10月1日      道路破損のため
水道工事  2222-1111   11月1日     水道管拡張のため
となっていたりします。
増えた状態で読み込むとインポートエラーになります。
わかりづらい説明ですみません。増えた項目についてもそのままテーブルへ取り込みたいと思っています。
どうぞよろしくお願いいたします。
 
 
 
 

回答
投稿日時: 19/12/23 18:24:45
投稿者: sk

引用:
現在、他社から共有されるエクセルファイルをACCESSに取り込んで管理をしております。
そのエクセルファイルの項目が他社の都合で増えたり、減ったりします

引用:
テーブルの項目を変えたりしなくても自動で取り込んでくれる方法はないでしょうか?

引用:
増えた項目についてもそのままテーブルへ取り込みたいと思っています。

既存のテーブルをインポート先としている限りは無理です。
 
過去のスレッドより:
https://www.moug.net/faq/viewtopic.php?t=78842
 
上記のスレッドでも回答した通り、Excel ワークシートの
インポート/リンクを行なう場合において、各フィールドの名前や
データ型に関する規則、制約は非常に厳格なものです。
 
(それ以前に、リレーショナルデータベースの保守において、
テーブル定義をそんな頻繁に変更してよいものではない)
 
・新規テーブルとしてインポートすればフィールドも自動的に定義されるが、
 インポートしたテーブルのレコードをマスターテーブルに追加する操作が
 必要となる。
 (言うまでもなく、マスターテーブルの定義内容はそのままである)
 
・Excel ブックのファイルパスが常に固定されている場合は
 インポートではなくリンクを行なうようにすればよいが、
 Excel 側で「Access の命名規則に反するようなフィールド名」が
 使われるケースが一方的に生じ得るなら、この方法も妥当とは言えない。
 
引用:
今後ACCESSをしようした事のない人へ引き継がなくてはいけないため
複雑な処理をさせたなくない

仮にプログラムで解決できたとしても、そのプログラムの保守作業も
込みで引き継ぎさせられたら、結局同じことなのでは?
(むしろそっちの方が危険)

回答
投稿日時: 19/12/24 13:01:19
投稿者: おばちゃん

1、エクセルファイルをリンク
必要のない項目が重複してようが、必要な項目さえ一致していれば対応できます。
docmd.TransferSpreadsheet acLink ,acSpreadsheetTypeEx・・・
2、リンクしたエクセルファイルから必要な項目だけをインポート用テーブルにクエリで追加
docmd.openQuery "追加クエリ"
では、ダメなんでしょうか?
 

回答
投稿日時: 19/12/26 21:37:23
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:
現在、他社から共有されるエクセルファイルをACCESSに取り込んで管理をしております。
そのエクセルファイルの項目が他社の都合で増えたり、減ったりします。(月一回程度)

 
この状態は、「共有4とは、言えないでしょう。
 
他社の都合かもしれないが、勝手にデザインを変更することは、よくない。
相手とどの様な「約束としているですか?
 
相手には、連絡もしないで。勝手に使っているのでしたら、文句は言えないと思いますが、
お互いがよい関係なるよう、キチンと取り決めをした方がよいです。
 

投稿日時: 19/12/27 13:57:03
投稿者: マヨイ

皆様お力添えありがとうございます。
エクセルファイルをリンクしてクエリで回すやり方でやってみようと思います。
インポート元のファイルですが私の会社だけでなく複数の会社へも共有しており、別の会社から追加の要望があると知らずにファイルの項目が増えてしまう状況でした。
言葉たらずで申し訳ありません。
また何かありましたらよろしくお願いいたします。