エクセル+VBAで製造工程モニタ(工程実績吸上①対PLC/TakebishiDeviceXPlorer+工程実績吸上②.csvファイルを上位サーバから読出⇒モニタ/分析実施VBA-Prg)を構築し、連続でモニタ運用していますが、発生頻度は少ないですが、②の.csvData読出時に絡むと疑われる(Dataが中途半端)エラーで停止します。
(注)②Dataはサーバ側条件成立でサーバ側で都度上書きされ、モニタ側とのインターロック取っていません。(とゆうか「とれない/できない」・・・)
エラートラップも試して見ましたが、エラー発生時はDeviceXPlorerの通信Prg記述のクラスモジュールに飛び、原因がはっきりしません。(トラップは見直し中です。)
●現状②のData読出しは『FSO/ Dim bufReadAllTxt As String / bufReadAllTxt = txtStreamObj.ReadAll』の結果を配列に展開しています。
■他方『Open pathname For mode [ Access access lock ] As #filenumber [ Len = reclength ]』のネット上の説明には、OSとのインタロックの記述があり、他のアプリケーションなどから使用申請を遮断とあります。
▲基本的な質問になりますが
▲a:上記FSO/txtStreamObjや、ADO/dbCon.Open/dbRs.Openによる、サーバー側からの.csvDataの吸い上げ時は、上記■の様な「排他使用」のインターロックが効いているのでしょうか?
▲b:FSO/ADOでインターロックを追加できるとしたら、どのような記述になるのでしょうか?
以上、よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
最初に、失礼ですが、もう少し、わかりやすく書かれると良いのですが。
>上記■の様な「排他使用」のインターロックが効いているのでしょうか?
「排他使用」のインターロック?
それでは意味がよく分かりません。工業界ではあるのかもしれませんが、VBAでは使わない言葉だと思います。
おそらく「排他制御」のことではないでしょうか。「排他制御」とは複数のアプリで同時に使わせないことです。言い換えれば、「排他制御」は、ファイルの編集のインタラクション(割り込み)を許さないということです。インターロックというのは、複数の命令があっても、最初の命令を優先し同時には、オンにならない設定のことだと思うのです。
>OSとのインタロックの記述があり、他のアプリケーションなどから使用申請を遮断とあります。
「使用申請を遮断」は、「割り込みを拒否」ではありませんか?
「排他制御」が効いていても、マクロの上の読み込みの「排他制御」など、もし、中途で問題が発生すれば、データの吐き出しの前に、マクロがエラーを起こします。
途中の割り込みを禁止させる(排他制御とは違います)
Application.Interactive = False (最初でFalse を宣言して、作業の終わりに Trueで戻します。) 他にも同様のコマンドを加えても良いと思います。
を使います。ふだんはあまり使わないコマンドで、主にユーザーから、実行中に、キーボードから割り込みを入れられたくない時に使うものです。
私が読んで理解した限りにおいて、以下の問題を解決すればよいのではないでしょうか。
>②の.csvData読出時に絡むと疑われる(Dataが中途半端)エラーで停止します。
いつも、こうした問題で、私が申していることですが、その対象ファイル(csvData)の内容が、Text ファイルであると確約できますか。つまりテキストファイルでは除外されているエスケープシーケンスを含む全てのバイナリデータは混入していないか、確認されていますでしょうか。
他の言い方でいうなら、「排他制御」は、この際除外しておいて、まず、「割り込み制御」を設けて、つぎに、テキストのみを通すフィルターを設ければよいのではないかと考えます。そもそも、FSO(FileSystem Object) を使って、bufReadAllTxt これは一括して処理しているようにお見受けしたのですが、電子のゴミも含めてインポートした可能性があるのではと想像しました。テキストファイルのワン・ラインごとに、拾っていったら問題が減るのではないかと考えます。
No.1
- 回答日時:
VBAがCSVを読みに行くタイミングはどの様にしているのでしょうか?
私も似たようなプログラムを作ったことがありますが、相手がCSVを更新するタイミングで読みに行くと仰るような障害が発生したので以下の様にしました。
1.CSVの更新時間を定期的(相手側の更新間隔より短い間隔)にチェックする
2.更新されていたら、更新が確実に終了するまで一定時間待ってCSVをローカルにコピー
3.コピーしたCSVを読み取る
相手側のCSV更新頻度、VBAが読みに行くタイミングの取り方によっては使用できないかもしれませんがご参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スーパーのレジで並んでいたら...
-
VB6でSendKeyを利用したTab移動...
-
PICのPWMの正しい使い方につい...
-
Amazonfireタブレットにわから...
-
DOS ターボCのプログラム タイ...
-
割り込み処理のシミュレート
-
割り込みのカウントの仕方
-
電車のドアの前での並び方
-
VB.NET スレッドからのイベント...
-
このレジの並び方は間違ってま...
-
割り込み?
-
USJでの割り込み
-
PICでのプログラムによるチャタ...
-
列に割り込んだ上文句言うやつ...
-
Macターミナルで実行中のプログ...
-
バックグラウンドのプロセスの...
-
TCP/IP通信時のサーバーからの受信
-
プロダクションコードとは?
-
C言語で、メモリを解放しないで...
-
緯度、経度の 10進法と 60進法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スーパーのレジで並んでいたら...
-
電車で待機列の割り込みについ...
-
このレジの並び方は間違ってま...
-
pic 複数の割り込み関数 切り分...
-
マイコン C言語 割り込み処理...
-
USB機器からのデータ受信による...
-
【組込み】割り込み中のstatic...
-
USJでの割り込み
-
CPUの処理量を減らすコーデ...
-
マイコンSH-2の割り込みを用い...
-
PICで内部タイマーを使わずカウ...
-
VBAのDoEventsが上手く動きません
-
CPU負荷率の安全な上限と計...
-
プリントスクリーンの自動化
-
一定時間操作がなかったら、と...
-
電車乗車時、並んでいるのに割...
-
割り込み処理について
-
アセンブラのタイマー割り込み
-
複数の割込み処理からアクセス...
-
VB6でSendKeyを利用したTab移動...
おすすめ情報
siffon9/WindFallerさんありがとうございます。
(質問再構成です。)
「実績①工程タイミング制御不可PLC常時監視/Onで読出し→実績②**.csv読出→分析」、②の読出『FSO/ Dim bufReadAllTxt・・・ReadAll』で読出中エラー停止。他方『Open pathname ・・As#filenumber・・』では#filenumberで排他/割込拒否の情報もあります。
●そもそもFSO/ADOでサーバー側接続時は排他/割込拒否が効いているのか?
▲Application.Interactive=False(Form/KeyBord含め)でFSO/ADO接続中のサーバー上書抑止できるのか?
■抑止を有効にするコマンド/プロパティー設定は他にありますか?
※電子ゴミ:読出頻度低/Data大な他仕組みでは発生無しです(たぶんOKです。)
字数で・・・・