

環境はEXCEL2003です。
EXCELからCSVファイルを読込み、
それに対して処理を加え一覧表示するVBAを組んでいます。
CSVファイルの読込みにはADOを使用しており、
指定しているプロバイダはMicrosoft.Jet.OLEDB.4.0、
複数の人が同時に実行する可能性があるプログラムです。
ここで問題なのですが、
Dim con As New ADODB.Connection '入力ファイル接続用コネクション
Dim connectionString As String 'コネクション接続用文字列
(中略)
Set rs = con.Execute(SQL)
とSQLを実行する際に、
複数のユーザが同時に実行すると、
一人を除いて添付のようなエラーが発生してしまいます。
調べてみたところ、
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?p …
こちらのエラーが近いのかと思いますが、
>JET経由でのADOでDBをオープンする場合、必ず、1ファイル
>1コネクションで行って下さい。
と記載があるところを見ると、
CSV読み込みの場合も複数人での接続は無理なのかな…と思いつつあります。
※ファイルは、読取り専用で開ければ良いのですが、
ファイルに読取り専用属性を設定したりしても効果ありませんでした。
ですが一つのデータファイルを、複数の人が利用する、
というのは普通にある処理だと思うのですが、
こういうのはどうしたら良いのでしょうか?
根本的にADO接続でいければ万事解決ですが、
この手の処理方法で上手い方法があれば教えてください。
(普通のCSV読取りではなくADOを使っているのは、
SQLの条件指定で処理がかなり簡略化出来る仕様が背景にあります。)
A 回答 (1件)
- 最新から表示
- 回答順に表示

No.1
- 回答日時:
同時オープンは無理でしょう。
CSV を更新する必要が無いのなら Recordset を取得してすぐに Connection を切断するってのはどうでしょうか。
あとはエラーをトラップしてどう処理するかってところでしょうかね。
少し待ってから開けと表示するのか、開けるまで無限ループで待機させるのか。
ありがとうございます。
一点教えて頂きたいのですが、
>CSV を更新する必要が無いのなら Recordset を取得してすぐに
> Connection を切断するってのはどうでしょうか。
どこかでRecordsetをCloseした後でないとConnectionの切断はしてはいけない、
と見た気がするのですが、Recordsetを取得したら先行してすぐに切ってしまって問題ないものでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 2003 のエラーメッセージ
-
PowerShellを使って関連付けら...
-
access テキストボックスの値取得
-
ExcelVBAで既に開いてるwordを...
-
Access2013にてドラッグ&ドロ...
-
fgets関数のEOFの扱い方について
-
RAR圧縮ファイル(分割)の順番が...
-
排他ロックが掛かっているファ...
-
cube PDFについて
-
VBから参照できないCのDLLを使...
-
【関数】同じ関数なのに、エラ...
-
Returnに対するGoSubがありません
-
freadでデータがない場合の読込...
-
【COBOL】read文でエラー
-
EXCELVBAでONEDRIVE上への保管...
-
DisplayAlertsブロパティで ”実...
-
ファイルのオープンについて
-
Excel2013 VBAでAccess2013に接...
-
VBでファイルが開かれているか...
-
「パス名が無効です」の発生原因
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【関数】同じ関数なのに、エラ...
-
access テキストボックスの値取得
-
エクセルで質問です。 ハイパー...
-
「パス名が無効です」の発生原因
-
PowerShellを使って関連付けら...
-
NAS上のファイルの使用中が解除...
-
gccを行ってもexeファイルが生...
-
アクセスのクエリでコンパイル...
-
ExcelVBAで既に開いてるwordを...
-
Returnに対するGoSubがありません
-
VB6 Dir関数で52エラー発生
-
VBでファイルが開かれているか...
-
データベースソフトのアクセス2...
-
エクセルマクロでエラーの原因...
-
fcloseで発生するエラーについて。
-
batファイルでレジストリキーの...
-
FORTRANの実行エラーについて
-
VBから参照できないCのDLLを使...
-
【COBOL】read文でエラー
-
DisplayAlertsブロパティで ”実...
おすすめ情報