下記についてご教授願います。
PCが3台(LAN接続)あり、PC1にEXCELLシート、PC2,PC3にVBソフトがあります。VBソフトで入力したデータをPC1のEXCELLシートに出力します。PC2,PC3が同時に入力した場合、上手くいかないと思うのですが。(VBソフトはまだ作成されていません。)
何かよい手法等ありますでしょうか?
EXCELL側はさわれません。(マクロなど追加できません。)
以上、宜しくお願いいたします。
一番簡単なのはPC1のExcelファイルのあるフォルダの中に
PC2,PC3でデータの出力を開始する際にVBソフトからダミーファイルを作っておき
出力完了時にそのダミーファイルを削除。
ダミーファイルが存在する場合は、出力を禁止するという方法かと。
(PC2,PC3からの出力が途中で異常終了した場合にダミーファイルが残ってしまう場合がありますが…)
ただ書かれている仕様で一つ疑問な点が。
PC2,PC3からの出力は制御できるとして、
PC1でExcelファイルを直接開いている場合はどうするのでしょう?
早速の回答ありがとうございます。
やはり、ダミーファイルでチェックするしかないのでしょうか。。。
Excelファイルについてですが、閉じていることが前提です。
(本当は、開いている状態でやりたいのですが。。。)
以上、宜しくお願いいたします。
同時というのはどの程度のものでしょう。
①毎回書き込み内容を転送時にだけファイルをオープン&クローズするのでしょうか?
②それともソフトの起動時には常にエクセルのファイルがオープンした状態なのでしょうか?
③また、エクセルのファイルを扱うのはデータのみでしょうか?
④それともセルの色を変えたりデザインの方向も必要なのでしょうか?
TOSU0428さんの場合の事を考えると②ではなく①をお勧めします。
さらに、①と③の状況に当てはまるのならデータベースとしてファイルを操作されてはどうでしょう。
ADO.NETのDataSetを使うと始めにデータベースからデータを貰い別の作業領域にコピーします。この作業領域でアレンジし、好きなタイミングで今度は作業領域からファイルへ更新できるものです。
常にお互いの更新状況を見たい場合は、1回のデータの入力ですぐ更新しなければならないですけれど。
それでもたまたま ほぼ同じタイミングで更新作業を行った場合にはデータを何か別の場所に待機して他のPCの更新作業が終わったら落ち着いて待機データをファイルに更新させるのはどうでしょう。
どのくらいのデータ量になるのか分かりませんが、更新作業にかかる時間は長くても数秒程度なのでは?少なければ一瞬です。
シゲさんへ
回答ありがとうございました。
シゲさんの言う通り、①と③について行いたいと思っています。
データベースにて操作することにしました。
以上、また宜しくお願い致します。