- 締切済み
VBA実行中に他の作業をする
VBA実行中に他の作業をする Win7 にExcel2010を入れて使っているのですが、 VBAで数値計算プログラムを走らせつつ、画像ファイルを開いたり、ファイルコピーしたりなどを 行うことができます。 一方で同じプログラムでも Win8 に入れたExcel2010では、ファイル操作しようとすると マウスポインタが砂時計マークになり、数秒~10秒ていどもたつきます。 DoEventsを増やしてみてもあまり効果はありませんでした。 なぜこのようにOSによって違いみられるのでしょうか? そしてWin8でもWin7と同様にVBA実行中に他の作業を行うにはどうしたら良いですか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nda23
- ベストアンサー率54% (777/1415)
DoEventsではなくSleepを入れる。 '定義 Public Sub Sleep Lib "kernel32" (ByVal ミリ秒 As Long) プログラムの所々に"Sleep 1"を入れる。 タスクマネージャで見ると、入れる前と、入れた後では CPU使用率が全く異なることが分かると思います。 これはOS依存の問題ではなく、Windows下における プログラムの「配慮」の問題です。
- RandenSai
- ベストアンサー率54% (305/561)
なるほど、OS依存の何かがあるらしいと言うことですね。マイクロソフト公式コミュニティにも、それっぽい質問が出ていました。ただこれはx64版での話のようですが。 http://goo.gl/6KuQc6 ただおそらく、似たようなことが起きていそうな気はします。上記のやり取りの中身が通用するならラッキーで、ダメな場合はどのマクロコードで重くなるか、コメントアウトしながら探っていくしかないと思います。あまり回答になっていなくて申し訳ないのですが。
- RandenSai
- ベストアンサー率54% (305/561)
それは同一PCでの話ですか?もし別のPCでの話だったら、それはPC自身のスペックであったりセキュリティ対策ソフトの違いであったりといった、OS以外の要素が多大に影響してきますが。 8は使い勝手の悪評は高いけど、パフォーマンス面で酷評しているのは専らゲーマーだけで、一般ユーザーからそうした不満の声が上がっているような話はないと思います。むしろ8の方が7より若干軽いはず・・・と言うことで、今の情報だけではOSのせいとは考えにくいというのが一般論です。
お礼
win7は3年前に購入したノートPC、 win8は1年前に購入したデスクトップで win8の方が圧倒的にスペックは高いです。 セキュリティソフトなど入っているソフトはほぼ同じです。