- 締切済み
VBAで「メモリが不足しています」
VBAツールを作成しました。それぞれ3000行位のデータの1列を取得して、テキストファイルに書き出すツールです。 それが5シート分あり、ボタンを押して実行させます。 標準モジュールに関数が6個 各シートモジュールは関数7個×4シート分 極端に多いモジュールではないと思います。 「メモリが不足しています」と表示されるようになり、 これ以上記入もできない状態です…。 エクセル自体は18MBあります。 PCのCドライブには8GB空きがあります。 PCを変えてエクセルを開いてみても、開いた途端に「メモリが不足しています」と出ます。 どの関数の実行ボタンを押しても、実行はされず、メッセージが出るだけです…。 助けてください!!!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
>それぞれ3000行位のデータの1列を取得して、テキストファイルに書き出すツールです この意味が(必要性が)良くわからないが、1つのシートで良いから具体例を5行ほど挙げてもらえないかな。 そして、どういうことをしたいのかを。 VBAを私でも組めそうに思った。 ーー もしできたら、それを質問者が実行して、メモリが不足しています、になるかな。 質問者のVBAの技量が判らないが、コードの組み方がもっと簡単なやり方にできるのではと思う。 >各シートモジュールとはどういうことだろうか。イベントプロシージャ以外は考えにくいが、何が(コード)入っているのかな。 >関数7個 関数は使っている関数の個数か。関数プロシージャーを置いているのか。関数は標準モジュールに置くことが多いと思うが。 参考 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200_040.html
- avanzato
- ベストアンサー率54% (52/95)
以前会社で似たような状態を見たことがあります。 エクセル自体の大きさが15MB程でしたが使用者のパソコン(メモリー512MB)では開けず私のパソコン(メモリー2GB)で試したところ時間は掛りましたが開くことが出来き対応をしました。 流石にエクセルで10MBを超えると開くだけで物理メモリーを消費します。 仮想メモリーに割り当てられている最大を上げることで一時しのぎは出来ます。 最大値の目安は搭載物理メモリの倍(512MBならば1024MB)が良いと聞いたことがあります。 根本的な対策として以下項目を検討してください。 (1)処理を分割する (2)エクセル終了時に取得データを消して終了する (3)シートを複数ブックに分割する 具体的にどのようなプロセスで取得~書き出しを行っているか分からないので現状言えるのはこのくらいです。