現象
Microsoft Office Excel 2007 に 2007 Microsoft Office スイート Service Pack 2 (SP2) を適用した環境もしくは Excel 2010 で、ピボットテーブルを使用して空白セルを "(空白)" と指定したマクロのフィルター処理を実行すると、以下のようなエラー メッセージが表示されて処理が失敗します。
エラー メッセージの例 :
400
または
実行時エラー ‘1004’
アプリケーション定義またはオブジェクト定義のエラーです。
なお、この現象は Microsoft Office Excel 2007 に 2007 Microsoft Office スイート Service Pack 1 (SP1) を適用した環境では発生しません。
回避策
Excel 2007 SP2 および Excel 2010 で、ピボットテーブルのマクロを使用して空白セルにフィルターをかける場合は、.PivotItems の指定には "(空白)" ではなく "(blank)" を使用してください。
状況
マイクロソフトでは、この問題について現在調査中です。詳細については、わかりしだいこの資料に掲載する予定です。
詳細
問題の再現手順
-
Excel 2007 もしくは Excel 2010 を起動します。
-
セルに以下の値を入力します。
注 : 空白の部分は何も入力しないでください。A
B
1
A
B
2
1
2
3
空白
3
4
4
空白
-
A1 から B4 を選択して、[挿入] タブの [ピボットテーブル] をクリックします。
-
[A] フィールドを [行ラベル] に配置し、[B] フィールドを [列ラベル] に配置します。ピボットテーブル上に空白のセルが (空白) と表示されることを確認します。
-
以下のマクロを作成します。
Sub MacroSP1()
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("A").PivotItems("(空白)").Visible = False
End Sub
Sub MacroSP2()
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("A").PivotItems("(blank)").Visible = False
End Sub -
マクロを実行する前に任意の名前でファイルを保存します。
-
ファイルを保存後、ピボットテーブルが表示されているシートをアクティブにした状態でマクロ MacroSP2 を実行します。リスト [A] の (空白) のセルが非表示になることを確認します。
-
ファイルを保存せずファイルを終了します。
-
ファイルを開きなおし、ピボットテーブルが表示されているシートをアクティブにした状態でマクロ MacroSP1 を実行します。
結果
Excel 2007 SP2 および Excel 2010 でマクロ MacroSP1 を実行すると、エラーが発生してフィルター処理が実行されません。