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

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

関連記事

[Excel][VBA] リストボックスがクリアされてしまう問題

ActiveXコントロール(OLEObject)のリストボックスは、セルに何かを書き込んだりすると、選択状況がクリアされてしまう。 正確には、自動計算をOFFにしておけばクリアされないのだが、通常は自 …

[Excel][VBA] シートを新規ワークブックにコピーする方法

既存のシートからワークシートを新規シートにコピーする。 手動の場合は、新規ワークブックを選択するだけでよい。 VBAでは以下のメソッドを用いる。 コード例 [crayon-5c906e9d3b4652 …

[PowerPoint][VBA] パワーポイントで、選択中のグラフのバーの色を調べる方法

パワーポイントで、選択中のグラフのバーの色を調べる方法。 イミディエイトウィンドウで、以下のコマンドを実行。

なお、.RGBをつけても …

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

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

[Excel][VBA] ピボットテーブル「複数のアイテムを選択」の一括OFF

最近、VBAでピボットテーブルの操作にチャレンジしている。 細かい操作をする際に迷うことがあるので、Tipsとして紹介。 「複数のアイテムを選択」をOFF 前提 あらかじめピボットテーブルは作成済み …