プチIT化 PR

PivotTableクラスのPivotFieldプロパティを取得できません、が出る原因と対処

記事内に商品プロモーションを含む場合があります。
当サイトは、アフィリエイト広告を利用しています。

こんにちは、わたあめです。今回はExcel VBAでピボットテーブルについての記事です。ピボットテーブルにVBAでフィルタをかけたところ、以下のようなメッセージが出ました。

実行時エラー'1004'
PivotTableクラスのPivotFieldプロパティを取得できません。

このエラーの原因は?どうすれば?という事をまとめていきます。それでは、いってみましょう。

原因1:集計フィールドに指定するフィールド名が存在しない

一つ目の原因として、VBAマクロで指定しているピボットテーブルのフィールドが存在しないフィールド名を指定しているからでした。

例えば、集計フィールドを定義して、データフィールドに追加するというマクロ例をみてみましょう。「フィールド名1」と「フィールド名2」があるピボットテーブルを操作する際、フィールド名を「フィールド名1」と全角であるべきところを半角で指定してしまったり、「フィールド1」と"名"の1文字を抜かしてしまったり。

' 集計フィールドを作成(フィールド名1とフィールド名2の和)、データフィールドに追加する
ActiveSheet.PivotTables("ピボットテーブル名").CaculatedFields.Add "計", "=フィールド名1+フィールド2", True
ActiveSheet.PivotTables("ピボットテーブル名").PivotFields("計").Orientation = xlDataField

上記マクロだと実行時エラー'1004'となりますね。これを、正しいフィールド名にしたマクロが以下のマクロです。

' 集計フィールドを作成(フィールド名1とフィールド名2の和)、データフィールドに追加する
ActiveSheet.PivotTables("ピボットテーブル名").CaculatedFields.Add "計", "=フィールド名1+フィールド名2", True
ActiveSheet.PivotTables("ピボットテーブル名").PivotFields("計").Orientation = xlDataField
悩める人
悩める人
フィールド名が正しいか、いま一度ご確認してみましょう!

原因2:フィールド名に特殊な文字列が含まれている

同じエラーが別の原因でも出ました。それは、フィールド名の文字列に、特別扱いしなくてはならない文字が入っている場合です。私の場合、フィールド名に括弧"("や")"が含まれていたことが原因でした。

「フィールド名2(備考)」という括弧が含まれるフィールド名を使っている場合、以下のようにそのまま扱ってしまうと、実行時エラー'1004'がでます。

' 集計フィールドを作成(フィールド名1とフィールド名2の和)、データフィールドに追加する
ActiveSheet.PivotTables("ピボットテーブル名").CaculatedFields.Add "計", "=フィールド名1+フィールド名2(備考)", True
ActiveSheet.PivotTables("ピボットテーブル名").PivotFields("計").Orientation = xlDataField

括弧などの特別な文字列がある場合、フィールド名をシングルクォーテーション「'」で囲ってあげるとうまくいきます。

' 集計フィールドを作成(フィールド名1とフィールド名2の和)、データフィールドに追加する
ActiveSheet.PivotTables("ピボットテーブル名").CaculatedFields.Add "計", "=フィールド名1+'フィールド名2(備考)'", True
ActiveSheet.PivotTables("ピボットテーブル名").PivotFields("計").Orientation = xlDataField

上記のように「フィールド名2(備考)」を「'フィールド名2(備考)'」とシングルクォーテーションで囲って扱います。

さいごに

いかがだったでしょうか。他の原因でも同じエラーになることもあるのでしょうが、私が出会った原因2つを紹介させていただきました。マクロ、うまく動くようになりますように。それでは、また!