• 締切済み

マクロの並行処理について

あるサーバーにおいてあるCSVを読みに行く常駐ソフト(AAA.exe)があります。 これとエクセルが連携していて、エクセルのセルに =AAA|a とか =AAA|b とか入力しておくとCSVのaやbの値がセルに入力されます。 この常駐ソフトはリアルタイムに動いて、CSVは1秒ごとに新しいデータに書き換えられるので、エクセルのセルの値も当然1秒ごとに新しい値に変わっていきます。 これを動かしながら、マクロを別でくんで、こちらはタイマーを設定して、10秒ごとにある特定のセルの値を見に行き、そのセルの値がある規定値以上になると、プログラムを走らせるようにしています。 朝の9時前後には規定値をこえるため、マクロのプログラムが動かなければいけないのですが、いつも10時過ぎになってやっと動きます。 また、セルの値もすべてのデータをとりにいかず部分的にしか入力されません。 これは常駐ソフトでエクセルにデータをどんどん入力している上で、さらにマクロを動かしているから、並行処理ができずに動作が不安定になっているのでしょうか? ちなみにマクロのタイマーは DoEvents Sleep (10000) で10秒またせた後に規定値以下ならば再起呼び出しで自分自身を呼び出すようになっています。 分かる方、もしくは予想でもいいので何かヒントとなるものが得られればと思います。 アドバイスよろしくお願いします。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

実際に試してみたわけでないし、質問者のシステムについて知らないので単なる推測ですが、 エクセルでは、マクロを並列で動作させることはできません(他のマクロが実行中に別のマクロを実行させることは(DoEvents を入れていたとしても)できない)ので やはり、どっちかの動作がブロックされているのではないかと思います。 どうせなら、常駐ソフト(を更新し)の方で規定値以上のチェックとプログラムの起動もやるようにしたらどうでしょうか

eri1235
質問者

お礼

ありがとうございました。 常駐ソフトは仕様の関係でこちらでは操作できないようになっております。 なんとか対策をとろうと思います。

関連するQ&A

  • マクロで引き算して0にする

    エクセルで任意のセルの値(正の整数)を引き算して、そのセルに”0”を表示するマクロはできますか。 たとえば、A1のセルに”50”と入力されているとき、マクロでA1のセルに”=50-50”という計算式を入力することはできますか。 データの入力されているセルのアドレス、および値ともに任意です。 教えてください。

  • マクロの自動実行などについて

    エクセル2003のVBAマクロについて質問です あるワークシートに値が入力されたら、マクロを自動実行するように出来ないでしょうか? 又、そのセルの値を別のセルにコピーしたいのですが、データを入力する度にセルの場所が ひとつ下へずれます。この最終列のセルの値を必ず拾うようにするにはどうすればよいでしょうか? ややこしくてすいません

  • EXCEL のマクロを作りたいんですが・・・

    マクロはあまり詳しくありません。マクロの記憶で設定し、多少内容の変更をする程度です。 マスターのBOOKがあり、月ごとにデータを入力し、その都度名前を付けて保存します。 (データの量はまちまちです) Sheet1にデータを入力し、Sheet2には関数が入っております。 使いたいのはSheet2にあるデータなのですが、データが無い欄は関数が入っていますので、そのままではデータとして使うのが面倒です。 CSVで出力するにしても、空の関数の欄が,,,,と出ます。 データが入っているセルだけを範囲指定して、値の貼り付けをし、使用していない空のセルの関数を消すというマクロが出来るでしょうか?

  • マクロの記録に入力規則設定セルの選択が記録されない

    "AAA"と"BBB"と言うExcelファイルがあり、"AAA"はsheet1のA2セルを入力規則で(1)~(4)まで選択できるようにしています(リスト"(1)~(4)"はA1~D1セルに入力)。この選択を行うことで、同シートにあるグラフが(1)~(4)のデータを切り替え表示するようにしています。又"BBB"のファイルにも、sheet1のA2セルを入力規則で、ア~オ(リスト"ア~オ"はAA1~AA5セル)まで選択できるようにしており、この選択切り替えで同シートにあるグラフがア~オのデータを表示するようにしています。 通常は、この9種のデータグラフを、入力規則を設定したセルの値を切り替えることで、状況確認を行っています。只、会議用の資料としては、毎回グラフを切り替え、9種類のグラフをコピーし、別のファイル"会議用データ"に図形の貼り付けて作成している状況です。 この一連の作業をExcelのマクロの記録で行わせようと思い、"会議用データ"ファイルのsheet1にボタンを用意し、sheet2に9種のデータグラフを図形貼りけする操作を記録させました。ところが、"AAA"と"BBB"の入力規則を設定したセルで値を切り替える作業がマクロに記録されず、旨く動作しません。どのようにすれば旨く動作するかご教授願います。私はVBは全く解りませんので、『記録されたマクロの何処の部分に、この命令文を追加しなさい!』等、補足説明入りでご教授いただければ助かります。

  • 関数エラーによるエクセルマクロの処理中断

    そんなにエクセルVBAが得意じゃないです。よろしく教示くださいませ。 セルにエクセル関数を設定し、マクロを働かせて使用しています。 セルに想定外のデータが入力されると、関数エラーを起こしてしまうのですが、 このエラーが発生すると、マクロも中断になってしまいます。 関数エラーが発生しても、マクロが中断しないような、マクロ命令って あるのでしょうか。 実は、マクロで想定外データのチェックをかけてるのですが、その想定外データが入力されると、 警告は発するのですが、関数エラーが発生し、マクロが中断してしまうのです。 マクロに組み込むべき、コマンドはあるのでしょうか。

  • EXCELのマクロをバッチファイルから起動させ、あるフォルダ内のCSVファイルをTXTファイルに変換。

    あるフォルダにdata.csvというファイルがあります。 一つ目の質問は、EXCELのマクロで「あるフォルダ内にある***.csvを開く」という動作はどのように記述されますか? 2つ目の質問はバッチファイルあるいはスクリプトファイルでEXCELのこのマクロを実行させることは可能ですか。どのように記述したらよいのでしょうか。 3つ目はセルA1~A10の値をx B1~B10の値をyとしてグラフを描かせるコマンドはありますか。

  • エクセルのマクロについて質問です。

    エクセルのマクロについて質問です。  セルにある値が入力されると、ある特定の図形が削除されるようにするマクロはどうしたらよいのでしょうか?

  • 条件処理マクロ

    エクセルのマクロについて教えていただけないでしょうか? セル A3以下にデーターが入っています(データーが入っている最終行は変化します) B3以下にもデーターが入っていますが、行によっては空欄にもなる場合があります やりたいこと セルAにデーターがあり、セルBにデーターがない場合はセルAのデーターをセルBにコピー セルAにデーターがあり、セルBにデーターがある場合はコピーせず、次の行を判定 これをAにデーターが入っていないセルが出てくるまで繰り返す 条件分岐と繰り返しマクロの組み合わせ方がよくわりません よろしくお願いします

  • マクロでシートをまとめる

    EXCEL97で200枚くらいのシートのデータを1つのシートにまとめようと思っています。 例えばE2~Z2のデータ(ほかのセルにも計算の参照をしているデータあり)だけを1枚のシートに上から下に順番に並べていきたいと思っています。 この場合値コピーをするか元のシートのデータを計算の参照にしないといけないと思いますがそれはどちらでもいいです。この場合マクロでどうプログラムを組めばいいでしょうか?

  • エクセルのマクロのコピーについて

    私はあるエクセルデータを持っているのですが、そのデータはマクロが組み込まれているらしく、開いたときには『セキュリティの警告』でマクロを有効化しなくてはいけないデータです。 ちなみに、このマクロ自体はセル(4列12行以上のセル)を選択すると、写真を選択するウィンドウが立ち上がって、そのセルにリサイズされた写真が挿入されるといったものです。 そのエクセルのデータの「VBAProject」を見てみると、各シート毎にプログラムが入っています。しかも、シート名がそれぞれ入っています。(私は詳しくないのですがそういうものなのかもしれません) このマクロをそのまま別のエクセルデータでも使えるようにするにはどうすればいいのでしょうか? 色々とネットで調べたら、 1.マクロのセキュリティを下げる 2.新しいエクセルを立ち上げてドラッグする などとありましたが、よく分かりませんでした。 申し訳ないのですが、教えていただけるとありがたいです。 どうかよろしくお願いします。

専門家に質問してみよう