dポイントプレゼントキャンペーン実施中!

ExcelのWorkbook_Openで外部データの外部データの取り込み(QueryTable.Refresh)を実行してAccessのデータを取り込んでいます。
するとロックファイル(XXXX.ldb)が作成されてしまい、同Excelからデータベースの最適化(CompactDatabase)を実行できません。
ロックを解除して最適化を実行できるようにするには、どうしたらよいのでしょうか?
アドバイスをお願いいたします!

A 回答 (2件)

こんにちは。


Microsoft Query をインストールしてなくて、ヘルプを見ただけですけど、
Refresh を発行するとクエリを実施するとあるだけで、切断方法は分りませんでした。
(Delete がそれっぽい感じですが、ピポットテーブル自体を削除してしまうのかな?)

推測ですが、クエリ実施 = DB接続 なんで、切断できずに繋がりっぱなし
かもしれませんね。当然、繋がっていれば最適化できません。

どうしてもエクセル作業中に最適化するならば、接続方法を再考する必要があるかも。
ADO で、接続状態を管理しながらデータベースとやり取りしてみてはどうでしょう。

蛇足ながら、運用として、複数人でそのエクセルから DB へ接続した場合、
随時に最適化ってのは無理だと思います。
    • good
    • 0
この回答へのお礼

DELETEで切断できて最適化はできるようになるんですが、次にまたデータの取り込みをするためにはややこしい記述をしてADDしなくてはなりません。
当面は最適化は別の所からCALLするようにして対処することにします。
ありがとうございました。

お礼日時:2005/08/31 22:37

レコードロック情報はAccessを終了させないと消えません。


Accessのデータを取り込んだ後にオブジェクトを開放してAccessを終了させてからCompactDatabaseを使い最適化するようにしないと。
CompactDatabaseは閉じているデータベースを最適化するコマンドなのでAccessを閉じていないとダメです。

この回答への補足

すみません、言葉が足りないようでした。
AccessのMDBは開いてはいません。
ExcelからQueryTable.Refreshを実行するとLDBファイルができてしまいます。Excelを閉じると消えます。
外部データの取り込みのクエリーのModeが"Share Deny Write"ではなく、"ReadWrite"になっているようです。ここはどのように変えたらよいのでしょうか?
はじめにMDBを開いた状態で外部データの取り込みをしたからなってしまったのだと思います。

補足日時:2005/08/30 21:47
    • good
    • 0

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