Square Beat Engine

Blog for variety of things…

MS-Office

[Excel][VBA] ピボットテーブルの生成時にメモリ不足(リソース不足)が発生する問題と解決方法

投稿日:2016-06-25 更新日:

エクセルで、ピボットテーブルを生成するマクロを使っていたのだけど、データが大きいとメモリ不足で動作しないことがあったため、改善した。

同じ問題で困っている人のために、自分の解決方法を記載しておくことにする。

起きた問題

今回問題が起きたのは、65536行×269列のデータ。
VBA内でピボットテーブルを生成する際に、リソース不足(メモリ不足)とのことで処理が止まってしまった。

処理中にダイアログが表示されて、なぜかOKボタンしかない。

20160623_1

仕方がないのでOKボタンをクリックすると、メモリ不足で実行時エラー7が発生。

20160623_2

30000行ぐらいに分割すると正常に動いたので、データ量が多いことが原因の様子。
ただ、実際のメモリが不足しているわけではないので、何らかの工夫で解決できると踏んだ。

解決策

結論

PivotCaches.Createの引数のSourceにRange型を入れていたのをAddress文字列にしたところ、メモリ不足は解消された。

コード

元のコードと改善したコードは以下の通り。

コードが長い場合、モジュールを分けると改善するという情報もあったが、今回は効果がなかった。

2時間ほどかけていろいろ調べて、試して、結局8文字追加しただけで解決。
プログラミングって意外と手を動かす時間が少ないんだよね…。

以上!

-MS-Office

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

[PowerPoint VBA] テーブルの各行の高さを揃える

パワーポイントのテーブルには、「高さを揃える」という機能があるが、VBAにはそれに該当するメソッドが存在しない。 そこで、以下のプロシージャを自作した。 コード [crayon-5c443f15750 …

[PowerPoint][VBA] スライドの追加

パワーポイントのスライドを作成する方法。 メソッド 単にスライドを挿入する場合は、PPT.Slides.Addでよい。 今回はテンプレートファイルからスライドをコピーする形を取ったため、いくつか工夫が …

[Power Point][VBA] 選択中のグラフのバーの色を調べる方法

パワーポイントで、選択中のグラフのバーの色を調べる方法を紹介する。 コード SeriesCollection内のインデックスは、調べたいバーのインデックスを指定する。 [crayon-5c443f15 …

[Excel][VBA] 行列入れ替えを伴う値の転記

以前書いたように、エクセルで値を転記する場合は、クリップボードを経由せずにValueプロパティを使う方法を勧めている。 しかし、クリップボード経由だと簡単なのに、経由しない場合だと面倒なものがある。 …

[VBA] Excel/PowerPointのグラフ上の全てのラベルを表示させるマクロ

MS Officeでは、グラフのことを主にチャート(Chart)と呼ぶので、以下ではチャートと呼ぶことにする。 さて、Excel2007のチャートにラベルを表示する際、複数の系統があると、1つずつ手作 …