
Private Sub AllKisyuChangeAnswer()
'設定完了手続き
Dim Path As String
Dim Num As Integer
Num = 1
Path = "\\70F\c\検査\pdata\KisyuAns" & Num & ".txt"
'設定完了確認ファイル(メインPC)へ結果書込み
Open Path For Output As #52
Print #52, 1
Close #52
End Sub
VB6.0sp6を使用しております。
PC6台のみのネットワーク上での動作なのですが、PC1~5からほぼ同じタイミングで上記サブルーチンを実行し、"KisyuAns" & Num& ".txt"というファイル名でPC6(マシン名は\\70F)へデータ(1)を書込みにいこうとしているのですが、Open Path For Output As #52のところでエラーが発生します(発生しない場合もあります)。
ほとんどの場合、PC1~5のうち2台で同じエラーが発生し、何かしらのバッティングが起こっているようにも思います。
ただ、デバッグモードでは、エラー部分でStopするので、そこから再度実行すると何事もなかったようにファイル書込み操作が完了します。書込むファイルは"KisyuAns" & Num & ".txt"で、PC1~5により、Numを1~5に変えて別名のファイルに書き込むようにしています。
書込みのタイミングをPC1~5で遅らせる方法も考えましたが、上記サブルーチンをPC1~5が実行するタイミングがわずかですが、一定ではありませんので難しいかと思います。また、PC6台全ての書込み操作完了までの時間もあまり与えられておりません(0.5Sec以下)
その他の情報としてですが、
・PC6のCドライブのみ共有化しています。
・PC1~6全てファイヤウォールを無効にしています。
・KisyuAns" & Num & ".txt" は、PC1~5による書込みが行われる直前(1secほど前)に、PC6により全て0が書き込まれています。
・エラーの内容は「実行時エラー"52" パスまたはファイル番号が不正です。」
エラーを回避する方法分かりません。長文で申し訳ありませんが、どなたかご回答のほどよろしくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示

No.2
- 回答日時:
PC6 と PC1~5 がそれぞれ同じテキストファイルを突っつき合ってるんですよね。
(突っつきあうタイミングがずれている事を開発者は期待している)切り分けのため、
とりあえず PC6 を動かさず、PC1~5 だけで実行してみてはどうでしょうか?
PC1~5 はサーバ上の同じフォルダにある別々のファイルを突っついてるんですよね。
次に PC6 と PC1 だけ。さらに PC6 と PC2 だけ。。。。
てな感じで。
実際のところホントに PC6 と PC1~5 は(ファイルが置かれているサーバから見て)「開く→書き込む→閉じる」 の一連セットでタイミングが被ってないんでしょうかね・・・
PC6 がファイルを閉じた後、ファイルのロックが解除されるまでの時間はファイルが置いてあるサーバの守備領域だと思うし。
ご回答ありがとうございます。
もっと詳しく申しますと、実はPC6は別装置からの外部信号をトリガを受け取り、別装置内のデータをRS232Cで読み込み、PC1~5用のデータ(中身は1~20の数値データのみ)ファイルを生成し、続けて全ての"KisyuAns" & Num & ".txt"に0を書き込んでいます。別装置からのPC6への外部信号トリガの1Sec後に別装置からPC1~5へトリガを出力してもらっています。そのトリガでPC1~5がデータファイルを読み込み、そのデータに従った操作を行ったあと、"KisyuAns" & Num & ".txt"に1を書込みにいく動きです。(その後PC6が"KisyuAns" & Num & ".txt"の1or0を読み込み、別装置へRS232Cで書込みにいきます)
PCの起動直後(朝一番)にこのようなエラーが見られ、以降、PCを再起動しない限り、ほとんど発生することはありません。
別装置側担当者により1Secを2Secに延長してもらいましたが変わりませんでした。色々とタイミングを変えてみたのですが、同様で、ただ、PC側をエラー停止しないようにステートメント(Resumeなど)を加えておき、装置側からのリトライにより(初めの1回+2回)思ったとおりの動作をします。なぜ3回必要なのかはわかりませんが。。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】同じ関数なのに、エラ...
-
access テキストボックスの値取得
-
gccを行ってもexeファイルが生...
-
エクセルマクロでエラーの原因...
-
VBでファイルが開かれているか...
-
DisplayAlertsブロパティで ”実...
-
Returnに対するGoSubがありません
-
「パス名が無効です」の発生原因
-
AutoExecで自動終了させるには?
-
batファイルでレジストリキーの...
-
ホームページビルダー14でHP...
-
アクセスのクエリでコンパイル...
-
MCASのFOM出版のテキストについて
-
Excel 終了時のエラー
-
InetのResponseCodeについて
-
DBへのコネクションタイムアウト
-
EXCEL マクロについて教えてく...
-
TEXTファイルをリンクしたMDBに...
-
アクティブシート名で新しいブ...
-
Excelファイルの操作についての...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
access テキストボックスの値取得
-
Returnに対するGoSubがありません
-
「パス名が無効です」の発生原因
-
PowerShellを使って関連付けら...
-
NAS上のファイルの使用中が解除...
-
アクセスのクエリでコンパイル...
-
VBでファイルが開かれているか...
-
ExcelVBAで既に開いてるwordを...
-
エクセルマクロでエラーの原因...
-
batファイルでレジストリキーの...
-
【COBOL】read文でエラー
-
VB6 Dir関数で52エラー発生
-
「アクティブ ユーザーが多すぎ...
-
データベースソフトのアクセス2...
-
VBから参照できないCのDLLを使...
-
DisplayAlertsブロパティで ”実...
-
Access2013にてドラッグ&ドロ...
-
ACCESS VBAでのインポート
-
すでにファイルが開かれている...
-
Vba ファイル書き込み時に書き...
おすすめ情報