• 締切済み

エクセルのマクロ

一定期間内の数量と価格をチェックするために エクセルでマクロを組みましたが下記のエラーが出てしまいます。 実行時エラー ’1004’ Worksheet クラスのPivot tablesプロパティを取得できません ソースは ' ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "データ!R1C1:R1000C19").CreatePivotTable TableDestination:= _ "[価格.xls]ワーク1!R1:R65536", TableName:="ピボットテーブル1", DefaultVersion:= _ xlPivotTableVersion10 ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:=Array("商品CD", _ "データ") With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("数量") .Orientation = xlDataField .Caption = "合計 / 数量" .Position = 1 .Function = xlSum End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("単価") .Orientation = xlDataField .Caption = "最大値 / 単価" .Function = xlMax End With Range("B1").Select With ActiveSheet.PivotTables("ピボットテーブル1").DataPivotField .Orientation = xlColumnField .Position = 1 End With End Sub です。 ストップしているのは↓の部分と思われます。 ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:=Array("商品CD", _ "データ") どうすればエラーが回避できるでしょうか。 ご教授お願いします。

みんなの回答

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.1

こんにちは。 >ストップしているのは↓の部分と思われます。 > >ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:=Array("商品CD", との事なので、おそらく『ActiveSheet』が曲者なのでしょう。 PivotTable作成時に、作成先である"ワーク1"がActiveになっていないのではないでしょうか? "データ"シートと"ワーク1"シートは"価格.xls"ブック内にあるのですね? その前提で、ActiveWorkbookやActiveSheetなど、 状況に依存するようなBookやSheetの指定を避けるとして、 With Workbooks("価格.xls").PivotCaches.Add(SourceType:=xlDatabase, _                       SourceData:="データ!R1C1:R1000C19")   With .CreatePivotTable(TableDestination:="ワーク1!R1C1", _               DefaultVersion:=xlPivotTableVersion10)     .AddFields RowFields:=Array("商品CD", "データ")     With .PivotFields("数量")       .Orientation = xlDataField       .Caption = "合計 / 数量"       .Function = xlSum     End With     With .PivotFields("単価")       .Orientation = xlDataField       .Caption = "最大値 / 単価"       .Function = xlMax     End With     With .DataPivotField       .Orientation = xlColumnField       .Position = 1     End With   End With End With ...などとしてみてはどうでしょう。 また、データ元範囲は"データ!R1C1:R1000C19"...のように固定でよいのでしょうか? 可変範囲に対応させるなら SourceData:=Sheets("データ").Range("A1").CurrentRegion ...などとするか、 毎回新規にPivotTableを作成し直すのではなく、 可変範囲の名前定義を使って、更新だけ行うようにする事も検討されてはいかがでしょう。 (参考) http://oshiete1.goo.ne.jp/qa2097393.html また、これは余計な事かもしれませんが、本題材であれば http://oshiete1.goo.ne.jp/c232.html Office系ソフトカテゴリのほうが良かったかもしれませんね。

関連するQ&A