- ベストアンサー
VBA & easycomm で長時間測定の問題
- エクセルVBAとフリーソフトeasycommを使用して複数の同じ機種の測定器からデータを取得し、エクセルに張り付けるプログラムを作成しています。
- しかし、長時間の測定ではプログラムが頻繁にフリーズしてしまいます。
- どうすれば長時間安定して動作させることができるでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エクセルのバージョンが古ければ、行数の制限に引っかかっている可能性はあります。 ファイルに書き出すには、何通りかの方法があります。 VBAを起動させ、ツールの参照設定で、 microsoft scripting runtime にチェックをいれ、 最初(ループの外)に Dim fso As New FileSystemObject Dim ts As TextStream Set ts = fso.OpenTextFile("C:\Documents and Settings\All Users\デスクトップ\test.txt", ForAppending, True) などと書いてておき、(ダブルクオート内はパス付きファイル名) Cells(kai + 6, dai + 2) = TEN_WAKE(0) ' 欲しいデータを縦軸に回数、横軸に台数にわけて張り付けていく の代わりに ts.WriteLine kai & vbtab & dai & vbtab & TEN_WAKE(0) 最後に(ループの外で) ts.close Set ts = Nothing とでもすれば、タブ区切りでデータを書いていくことができます。 CSV区切りなどにしたければ、ts.writelineの行をそのように変えればよいだけです。 このように変更して落ちなければ多分エクセルの行数制限に引っかかっているのだと思います。 書かれたデータを、何に、どのように読み込むかはまた、別問題です。
その他の回答 (1)
- ShowMeHow
- ベストアンサー率28% (1424/5027)
>かなりの頻度でフリーズしてしまいます うまくいくときもあるが、ほとんどの場合エラーで落ちるのではなく、フリーズ状態になるということでしょうか? エクセルのバージョンは2007以降ですか? OSはなんですか? フリーズするときのメモリ使用率はどの程度ですか? アドバイスとしては、データを一旦テキストファイルなどにに書き出しその後ファイルが出来上がってから、エクセルで処理されると良いと思います。
補足
早速の回答、有難うございます! うまくいっても、4時間ほど(15000回程度)でフリーズします。ダメな時は1000回くらいでフリーズ(砂時計表示で、エクセル自身も終わらせれられなくなります)します。 エクセルは97-2300ブックで保存しています。OSはXPです。 メモリー使用率は、当方、PCに詳しくないので分かりません・・・ <アドバイスとしては、データを一旦テキストファイルなどにに書き出しその後ファイルが出来上がってから、エクセルで処理されると良いと思います ですが、どうやってVBAでテキストファイルに書き出すのでしょうか?ご指導よろしくお願いします!