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

Access初心者です。Access2010を使用しています。
既存の個人用に作られたAccessシステムをネットワークドライブに移し共有しようとしています。
それに伴いテーブル分割して、バックエンドDBにしました。
既存機能でVBAからExcel2010ブックをインポートしているのですが、DoCmd.TransferSpreadsheet
の処理はエラーとはならないもののテーブルが更新されません。
msdnのTransferSpreadsheetの解説に「カレントデータベースに対すメッソッド」と書かれているので、バックエンドDBはカレント扱いされないのかも?っと思っています。
これってやっぱり出来ないものなのでしょうか?
TransferSpreadsheetの記述でデータベースをしていするなどで解決できるのでしたら書き方を教えて下さい。
宜しくお願いします。

質問者からの補足コメント

  • 最後の文書がへんなので訂正します。
    「TransferSpreadsheetの記述でデータベースをしていするなどで解決できるのでしたら・・・」
     ↓
    「TransferSpreadsheetのテーブル記述部を工夫することで解決できるのでしたら・・・・・・」

      補足日時:2016/03/09 22:05

A 回答 (2件)

インポートっていうのはその時点のデータを取り込むっていう意味ですので、エクセルを更新してもアクセス側は更新されません。



エクセルにADO接続するのは可能ですけど、、、
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
アクセスを使っていながら、エクセルをデータソースとする意味はないと思います。
遅いし、壊れる可能性高いし、何起こるかわかんないし、、、怖すぎます。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
質問が悪かったかも知れません。
エクセルと連動させてアクセスを更新しようとはしていません。

エクセルデータを一旦アクセス(一時的なテーブル)に取り込んでからマスターテーブルに反映するのですが、この一時的なテーブルにインポートされないという事象です。
これまでローカルの環境では問題無かったのが、テーブル分割してリンクテーブルになり実体が別DBになって出来なくなったと理解すべきなんでしょうか?

お礼日時:2016/03/09 22:21

現在の構造がフロントエンドにはバックエンド側のテーブルへのリンクのみが存在していて、バックエンド側にマスターの仮テーブルがあるなら、TransferSpreadsheetの処理は、バックエンド側で行うべきです。


どうしても、フロント側から行いたいなら、
1.それこそ仮テーブルにいったん格納して
2.バックエンドのマスターテーブルのデータを削除
3.バックエンドのマスターテーブルにインサート
4.仮テーブルのデータを削除
などの手順を取れば、できると思います。

まあ、個人的な経験からするとアクセスのバックエンド分離もユーザー数が多いと、時々不思議なことが起こるから、バックエンドだけでもSQLServerなどの普通のdb(とりあえずexpress でいいから)に更新することを考えておいたほうが良いと思います。
    • good
    • 1
この回答へのお礼

回答は読んでいたんですがお礼が遅くなり失礼しました。
やはり出来ないということですね。
結局、フロントエンド側のローカルに一時テーブルを置くことで解決しました。
バックエンドのDBをSQLServerなどの普通のdb変える。
アドバイス有難うございます。
参考にします。

お礼日時:2016/03/10 23:59

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

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