- 締切済み
マクロの並行処理について
あるサーバーにおいてあるCSVを読みに行く常駐ソフト(AAA.exe)があります。 これとエクセルが連携していて、エクセルのセルに =AAA|a とか =AAA|b とか入力しておくとCSVのaやbの値がセルに入力されます。 この常駐ソフトはリアルタイムに動いて、CSVは1秒ごとに新しいデータに書き換えられるので、エクセルのセルの値も当然1秒ごとに新しい値に変わっていきます。 これを動かしながら、マクロを別でくんで、こちらはタイマーを設定して、10秒ごとにある特定のセルの値を見に行き、そのセルの値がある規定値以上になると、プログラムを走らせるようにしています。 朝の9時前後には規定値をこえるため、マクロのプログラムが動かなければいけないのですが、いつも10時過ぎになってやっと動きます。 また、セルの値もすべてのデータをとりにいかず部分的にしか入力されません。 これは常駐ソフトでエクセルにデータをどんどん入力している上で、さらにマクロを動かしているから、並行処理ができずに動作が不安定になっているのでしょうか? ちなみにマクロのタイマーは DoEvents Sleep (10000) で10秒またせた後に規定値以下ならば再起呼び出しで自分自身を呼び出すようになっています。 分かる方、もしくは予想でもいいので何かヒントとなるものが得られればと思います。 アドバイスよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
実際に試してみたわけでないし、質問者のシステムについて知らないので単なる推測ですが、 エクセルでは、マクロを並列で動作させることはできません(他のマクロが実行中に別のマクロを実行させることは(DoEvents を入れていたとしても)できない)ので やはり、どっちかの動作がブロックされているのではないかと思います。 どうせなら、常駐ソフト(を更新し)の方で規定値以上のチェックとプログラムの起動もやるようにしたらどうでしょうか
お礼
ありがとうございました。 常駐ソフトは仕様の関係でこちらでは操作できないようになっております。 なんとか対策をとろうと思います。