ExcelVBA 「メモリが不足しています。」

ExcelVBA 「メモリが不足しています。」

投稿日: 2018年01月05日 カテゴリー:ExcelVBAエラー対策

実行時エラー ‘7’:ExcelVBA 「メモリが不足しています。」

エラーメッセージ

読んで字のごとく、「メモリ不足」が原因の実行時エラーです。ExcelVBA処理において、このエラーが発生する原因は、いろいろと考えられますが、たまに、不要なLoop繰り返し処理により、メモリ不足となってしまう場合があります。

 

このケースでは、適切なLoopとなるよう特定条件でこのLoopを脱出すれば良いので、無駄なLoopが突き止められれば、わりと簡単に解消できると思います。

 

また、別のケースでは、物理的、且つ、圧倒的にデータ量が多いケースです。

 

このデータ量とは、「データ件数」のみで語れるものではありません。

というのは「データ件数」という概念は、行方向、つまり縦方向に、どれだけデータ数が多いか、

といったものですが、忘れてならないのは「横方向の列数」という概念です。

一般的に、顧客管理などでは、例えば、顧客マスタは、顧客の基本情報を抱えるものですので、
顧客CD、顧客名、フリガナ、生年月日、郵便番号、住所1、住所2・・・・。
のように、延々と増えた場合においても、数十列、100列はないのではないでしょうか。

 

(私の経験上、100列を超える顧客マスタは見たことがありません。)

 

つまり、数百列におよぶ顧客マスタは、まず考えにくいので、データの件数が多い、少ない、といった会話になってくるのですが、これが、月別の売上/実績/修正値/2カ年などを管理するような表の場合、
最近のお客様の例では、600列が1行のデータというケースがありました。

 

Excelを手作業で長いこと業務で運用されていると、いつの間にか膨大なデータ量を1ブックで管理するようになることが有りますが、数年をかけて徐々に増えてゆくため、なかなか気づきにくく、変更見直しや改良をしにくいのだと思います。

 

ここで言いたかったことは、メモリ消費という原因に対して、解決策は幾つかありますが、

理想論は別として、現実的に、列数が数百列におよぶデータ範囲をマクロで処理する際に、
「メモリ不足」が発生する場合の回避策は、ただ1つと考えます。

 

それは、処理単位をいくつかに分割し、「メモリ不足」が発生しないようプログラム修正を行うことで、回避するしかありません。データベースを使えば回避できるか?と言われれば、データベース構築においても、

そんなDB設計を行うSEは恐らくいませんので、そもそもファイル設計から見直しとなります。

 

となれば、別の問題として、「発生コスト」が直結してくる事になります。
どんなトラブルも回避するための策はあるのですが、かけられる予算も限られてくる場合には、
知恵を出して、致命的エラーを乗り切らなければなりません。

 

Excel2007以降では、ワークシート内の取り扱い可能なデータ件数が、

(2の20乗)1,048,576件と拡張されましたが、理論上の上限ですので、
現実的は列数が少ない100列以下で、3万行未満というのが、
弊社の考える、Excelの1シートの「そろそろ別ブックに・・」をオススメする件数の目安でしょうか。

といっても、厳しい現実の中でも、VBAで処理できるよう対応するのが腕の見せ所ですので、
頑張って参りたいと思います。

 

(あっ、もう一つの方法がありました。

ExcelVBAでは、特に連続した繰り返しのセル操作、連続したワークシート操作はエラーの原因になるのですが、Excelブックを一旦「上書き保存する」ことで、メモリ解放され実行時エラーを回避できる事があります。

また、DoEventsなども有効と思われますので、たった1つではありませんね、失礼いたしました!)

 

最後に、この「メモリが不足しています。」エラーですが、あまりに大量なデータ範囲は、配列に格納できないので、(※出来たとしてもしない事をオススメいたします。)例えば、1000行や500行づつ小分け処理をすれば、この実行時エラーは間違いなく回避されますので、お試しください。

 

Excelエラー解決サービス提供を開始!

本サービスは、緊急性が高く、問題解決を必要とするケースでご利用メリットがあります。

 

 

 

 

 

 

 

 

 

 

 

 

 

<関連する記事>

Windowsアップデート不具合~突然、Excelが壊れて動かない!?

Excel64ビット非対応コンパイルエラー!?

ExcelVBA やっかいな「オートメーションエラー」

Excelシステム~納品前ブック点検【重要7項目】

Excelエラー解決サービス提供を開始!




業務効率化ご案内

便利ツールダウンロード

セミナー情報はこちら

お客様の声ご紹介

Array ( [0] => 2 )

株式会社セルネッツ