windows 7 – ExcelのCPU使用率を制限する

microsoft-excel-2007 vba windows-7 worksheet-function

実行時にエクセルがアクセスできるCPU使用量を制限する方法はありますか?私は巨大な配列式の束を計算するVBAスクリプトを持っています。全体の計算はCPUを100%使用して20分ほどかかりますが、その間マシンを使用することはできませんし、むしろ50%のCPU使用率でバックグラウンドで実行したいので、他のことを続けることができます。何か提案はありますか?

私のOSはWindows 7 Enterprise 64bitで、Excelのバージョンは2007-32bitです

  31  learningAsIGo  2016-01-12


ベストアンサー

VBA関数が複数の数式から呼び出されたり、スクリプトが複数の数式を生成したり、再計算を強制したりする場合、これは間違いなくExcelのマルチスレッド計算機能を利用しなければなりません。これは、各数式に対してVBA関数の複数のインスタンスを実行するか、VBAスクリプトが1つのスレッドで実行されている間に複数のセルを同時に再計算します

Excel のオプション…で数式の再計算に Excel が使用するスレッド数を制限することができます。詳細設定タブ…計算式セクション

enter image description here

54  mtone  2016-01-13


優先度を下げるのではなく、タスクマネージャーで親和性を変更してみてください。CPUが1つ以上ある場合は、Excelが使用するCPUの数を制限することができます。そうすることで、他のCPUは他のことをするために解放されます

プロセス]タブでExcelを右クリックし、[親和性の設定]を選択します。Excelを実行するCPUを選択します

28  B540Glenn  2016-01-12


タスクマネージャを開き、[詳細]または[プロセス]タブ(Windowsのバージョンによって異なります)に切り替え、excel.exeプロセスを右クリックし、優先度の低いものを選択して、excelプロセスの優先度を下げてみることができます。これにより、他のプロセスのCPU時間を増やすことができます

7  Slithy Toves  2016-01-12


VBAや宣言経由で利用できるSleepとWait関数があります。しかし、「過度に単純化された経験則」として、Sleep()は絶対に使わないことが挙げられます。(google ‘”never use sleep()” プログラミングで検索)

Application.Wait のドキュメントページ ( https://msdn.microsoft.com/en-us/library/office/ff822851.aspx )。スリープして待つと、指定した時間だけExcelが応答しなくなり、タイムスライスの “列車事故 “を引き起こす可能性があることに注意してください

計算に何らかのループが含まれている場合、特定の目的のためにこれを処理する方法の1つは、例えばDoEvents()を1秒間ループさせてから返すような、独自の特別な待ち関数を作成することです

DoEvents は基本的に OS などのための時間を与えるようにコードやインタプリタに指示します。これは間違いなくコードに時間がかかる原因になります。また、計算中にワークシートを編集できるようになるかもしれません。テストしてみてください

例えば、https://stackoverflow.com/questions/469347/is-there-an-equivalent-to-thread-sleep-in-vbaを参照してください

3  Yorik  2016-01-12


類似のquestinsは、解決策を持っている数年前に尋ねられました。プロセスのCPU使用量を制限することができるソリューションはありますか?

プロセスタマーはWindows 7で動作します。http://www.donationcoder.com/Software/Mouser/proctamer/

2  Ryan  2016-01-12


私のラップトップがメモリの4GBを持っていたときに私は同じ問題を抱えていました。私はそれを16GBにアップグレードしてもらったとすぐに, 問題は停止しました。ちょうど別の可能性のある解決策です

0  RPh_Coder  2016-01-22


マクロの開始付近のどこかに、以下の2行を追加します

'Turn off screen updating

Application.ScreenUpdating = False

そして、最後近くのこの2行

'Turn screen updating back on

Application.ScreenUpdating = True

そうすれば、他のことをしている間にやるべき仕事が減ります

0  Loppy  2016-01-23


64bit OSで32biのofficeを使っている人はこのアプリを使うべきです。http://www.ntcore.com/4gb_patch.php

このアプリを使えば、エクセルや他のオフィス32bitでもmoが使えるようになります

-2  diasje  2016-01-13


OpenOffice や LibreOffice を使用してください: そのスクリプトパワーは MS のものよりもはるかに効果的で、文字通り計算に「スロットル」を持つことができます

EDIT: なぜダウンコメントをするのですか? マニュアルを見て、自分の目で確かめてください。あなたの計算をJavaに変換することができますし、例えば、JVMのすべてのスロットリングパワーでちょうど良いです

-5  Alexey Vesnin  2016-01-13


タイトルとURLをコピーしました