環境は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ランキング
-
batファイルでレジストリキーの...
-
FTPの送信結果を検知したい
-
アクセスのクエリでコンパイル...
-
「パス名が無効です」の発生原因
-
VBでファイルが開かれているか...
-
gccを行ってもexeファイルが生...
-
Returnに対するGoSubがありません
-
Access2013にてドラッグ&ドロ...
-
VB6 Dir関数で52エラー発生
-
ワークブックに名前をつけて保...
-
エクセルマクロでエラーの原因...
-
EXCELのVBAでWORDが開いてある...
-
excel VBA webからデータを取り...
-
RAR圧縮ファイル(分割)の順番が...
-
VBから参照できないCのDLLを使...
-
すでにファイルが開かれている...
-
VBA データセットした後にその...
-
Excelファイルのマクロによる排...
-
CSVファイルが開かれているかど...
-
Adobeのプレミアプロの書き出し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
VBでファイルが開かれているか...
-
「パス名が無効です」の発生原因
-
batファイルでレジストリキーの...
-
Returnに対するGoSubがありません
-
VBから参照できないCのDLLを使...
-
PowerShellを使って関連付けら...
-
アクセスのクエリでコンパイル...
-
VB6 Dir関数で52エラー発生
-
FTPの送信結果を検知したい
-
NAS上のファイルの使用中が解除...
-
VBA ExecuteExcel4Macro 型が一...
-
access テキストボックスの値取得
-
EXCELのVBAでWORDが開いてある...
-
すでにファイルが開かれている...
-
EXCELVBAでONEDRIVE上への保管...
-
Excelファイルのマクロによる排...
-
OUTLOOK VBA 指定フォルダ内の...
-
エクセルマクロでエラーの原因...
-
Adobeのプレミアプロの書き出し...
おすすめ情報