エクセル+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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マイコン C言語 割り込み処理...
-
(H8マイコン)タイマ割込で変更...
-
PICのPIN変化割り込みに...
-
H8マイコンでの割り込み(シリ...
-
CPUの処理量を減らすコーデ...
-
ショッピング
-
USJでの割り込み
-
PIC18F14K50でmain処理が動作し...
-
pic 複数の割り込み関数 切り分...
-
【組込み】割り込み中のstatic...
-
複数の割込み処理からアクセス...
-
PIC アセンブラ TMR0の使い方...
-
raspberry pi の 割り込み原因...
-
PICでのプログラムによるチャタ...
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
バックグラウンドのプロセスの...
-
sil_rew_memのメモリアクセスに...
-
vba listviewにおけるtextのAli...
-
TCP/IP通信時のサーバーからの受信
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
インバウンドで迷惑している人...
-
pic 複数の割り込み関数 切り分...
-
スーパーのレジで並んでいたら...
-
ショッピング
-
Excelでタイマーの一時停止する...
-
電車で待機列の割り込みについ...
-
【組込み】割り込み中のstatic...
-
C言語でPICマイコン開発
-
CPUの処理量を減らすコーデ...
-
Amazonfireタブレットにわから...
-
マイコン C言語 割り込み処理...
-
USB機器からのデータ受信による...
-
一定時間操作がなかったら、と...
-
VB.net 割り込みの禁止
-
ウォッチドッグタイマ(WDT)の...
-
電車乗車時、並んでいるのに割...
-
USJでの割り込み
-
VB6でSendKeyを利用したTab移動...
-
PICでのプログラムによるチャタ...
-
H8マイコンで割り込みが任意の...
おすすめ情報
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です。)
字数で・・・・