- ベストアンサー
エクセルのリソース不足
エクセル2003で列全体を指定して文字の中央揃えをしていたら 突然 「リソース不足のため、このタスクを完了できません。 選択するデータを少なくするか、ほかのアプリケーションを 終了して再度試してくださ」 とメッセージがでました。 確かに大きなファイル(50MB)でマクロも数式もたくさん使用していますが こんなのは初めての経験なので驚いています。 このとき ほかのアプリケーションは起動させていませんでした マクロの変数宣言でリソースを使い過ぎているのでしょうか 選択するデータを少なくすればこのまま使い続けられるか不安です 対処法を教えてください
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Barracudaです。 > マクロの変数宣言でリソースを使い過ぎているのでしょうか この部分に注目しすぎました。 Excelマクロは標準モジュールに記述するから、ここに変数を大量に定義すればリソース不足になるかもしれない、と思ったのです。 しかし、マクロ実行中ではなく列全体を中央揃えしているときにリソース不足が発生したのなら、マクロは関係ありません。 大量に変数を定義していても、マクロが終了すれば解放されるからです。 このあたりがアプリを作成する際のAccess的考え方をしていました。 ちなみに、グローバル変数を説明すると長くなるので、「すべてのワークシートから参照できる変数」と思ってください。 キーボードマクロが記録される「標準モジュール」内に記述するとグローバル変数になります。 これに対し、シートやフォームで定義する変数が「ローカル変数」で、定義したモジュール内でしか使えません。 当然グローバル変数の方がリソースを多く使うので、なるべくローカル変数にすると良いかもしれないと思いました。 ちなみに、標準モジュールに記述する必要があるのは、複数のモジュールで共通に使用するサブルーチンや変数、ロード時に実行させたいコードなど、限られています。 ご質問のリソース不足ですが、画像がない状態で50MBもあり、計算式が大量に記述されていれば、再計算時に相当リソースを消費しそうです。 計算を手動にしてリソース不足が発生しなければ、単にファイルが大きすぎるだけ、という可能性が高くなります。 それにしても50MBとは、あまりに大きすぎるような気がします。 300-400KBの画像を1400枚貼り付けたExcelファイルを作ったことがありますが、それでも49MB程度でした。 ご参考までに。
その他の回答 (1)
- Barracuda
- ベストアンサー率59% (60/101)
リソース不足とは、また懐かしいエラーが発生しましたね。 Win9xはリソースが64KBしかないために頻発しましたが、NT系は1MB or 3MBあるので事実上不足することはないと聞いたことがあります。 しかし、Excelで50MBというサイズでグローバル変数を大量に定義していたら、リソース不足になるかもしれませんよ。 一時的にリソースを使いそうな部分をコメントアウトしてみて、どうなるか確かめるのがいいのではないでしょうか。 また、グローバル変数の使用は最小限にするといいかもしれません。 当方Access使いなので、Excelではあまり参考にならないかもしれませんが。
お礼
早速回答ありがとうございます >一時的にリソースを使いそうな部分をコメントアウトしてみて、ど>うなるか確かめるのがいいのではないでしょうか。 >また、グローバル変数の使用は最小限にするといいかも >しれません。 グローバル変数を最小限にするとは具体的にどのようにするのでしょう よろしかったら教えてください Access使い・・・・うらやましいです(^_^) 当方Accessに挑戦したのですが挫折組です。(T_T)
お礼
仕事上1年間のデータを蓄積する為に、大きな範囲(5000行) にデータベース関数を貼り付け ご丁寧にも異常な箇所が判明しやすいようにと条件付書式を 設定していますので、 こんな馬鹿でかいファイルになってしまいました >計算を手動にしてリソース不足が発生しなければ、単にファイルが>大きすぎるだけ、という可能性が高くなります。 ありがとうございます。 この一文だけでホットしました。 単にファイルが大きすぎるだけでフリーズの可能性は低そうなので 安心しました。 今、ファイルのダイエットに奮闘しています。 それと、計算を手動にするのも忘れないようにっと。