環境は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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) Excel VBA ファイル取得について フォルダの中に、ファイル名“会議“を含むファイルが1つまた 9 2022/10/12 01:18
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【COBOL】read文でエラー
-
Returnに対するGoSubがありません
-
batファイルでレジストリキーの...
-
「アクティブ ユーザーが多すぎ...
-
VB6 Dir関数で52エラー発生
-
VBでファイルが開かれているか...
-
Access2010 コンパイルエラー...
-
エクセル VBA dll 読み込...
-
access テキストボックスの値取得
-
VBから参照できないCのDLLを使...
-
VB:「実行時エラー53 実行ファ...
-
「パス名が無効です」の発生原因
-
FTPの送信結果を検知したい
-
イベントが発生しない vba
-
エラー:インクルードファイル ...
-
EXCELのVBAでWORDが開いてある...
-
fgets関数のEOFの扱い方について
-
アクセスのクエリでコンパイル...
-
VBAからAcrobat 8.0でPDFファイ...
-
FORTRANの実行エラーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBでファイルが開かれているか...
-
batファイルでレジストリキーの...
-
gccを行ってもexeファイルが生...
-
「パス名が無効です」の発生原因
-
Returnに対するGoSubがありません
-
アクセスのクエリでコンパイル...
-
NAS上のファイルの使用中が解除...
-
VBから参照できないCのDLLを使...
-
PowerShellを使って関連付けら...
-
Adobeのプレミアプロの書き出し...
-
EXCELのVBAでWORDが開いてある...
-
FTPの送信結果を検知したい
-
access テキストボックスの値取得
-
エクセルマクロでエラーの原因...
-
【COBOL】read文でエラー
-
VB6 Dir関数で52エラー発生
-
VBA ExecuteExcel4Macro 型が一...
-
Access2013にてドラッグ&ドロ...
-
freadでデータがない場合の読込...
-
ファイルクローズ(fclose)でエ...
おすすめ情報