[[20150313110156]] 『ピボットの自動記録から修正したらエラーになって』(モヘンジョダロ遺跡) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ピボットの自動記録から修正したらエラーになってしまう;;』(モヘンジョダロ遺跡)

 すみません、教えてください><
 ピボット集計をマクロの自動記録で作ったんです。
 それが●オリジナルです。でもあまりにも汚いしダメだなぁって思って
 ネットで検索し●使用プログラムを見つけたのでそれを元にして
 一番下の●変換後を作ったんですがエラーが起こってしまいます><
 何がどういけないのかさっぱりわからず、困っています。
 どうかお力をお貸しください><

 ●オリジナル
    変換.Worksheets("変換場所").Activate
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "変換場所!A1:S" & Range("E65536").End(xlUp).Row, Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="ビボット作成!R2C1", TableName:="プロダクトコード", _
        DefaultVersion:=xlPivotTableVersion14
    Sheets("ビボット作成").Select
    Cells(2, 1).Select
    With ActiveSheet.PivotTables("プロダクトコード").PivotFields("プロダクトコード")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("プロダクトコード").PivotFields("PCODE")
        .Orientation = xlRowField
        .Position = 2
    End With
    ActiveSheet.PivotTables("プロダクトコード").AddDataField ActiveSheet.PivotTables( _
        "プロダクトコード").PivotFields("決定金額"), "合計 / 決定金額", xlSum
    Range("A1").Select

    Range("A2").Select
    ActiveSheet.PivotTables("プロダクトコード").CompactLayoutRowHeader = _
        "プロダクトコード/PCODE"
    Range("A3").Select
    Columns("A:A").EntireColumn.AutoFit
    Range("A1").Select

 ●使用プログラム
  Dim ws As Worksheet
  Dim pvc As PivotCache
  Dim pvt As PivotTable
  Set ws = Sheets.Add
  Set pvc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
                        SourceData:="Sheet1!R1C1:R10C3", _
                        Version:=xlPivotTableVersion14)
  Set pvt = pvc.CreatePivotTable(TableDestination:=ws.Name & "!R3C1", _
                        TableName:="ピボットテーブル1", _
                        DefaultVersion:=xlPivotTableVersion14)
  With pvt
    With .PivotFields("担当")
      .Orientation = xlRowField
      .Position = 1
    End With
    With .PivotFields("分類")
      .Orientation = xlColumnField
      .Position = 1
    End With
    .AddDataField .PivotFields("金額"), "合計 / 金額", xlSum
  End With

 ●変換後
    Dim ワークシート As Worksheet
    Dim ピボット範囲 As PivotCache
    Dim ピボットテーブル As PivotTable

    Set ワークシート = 変換.Worksheets("変換場所")
    Set ピボット範囲 = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
                                                SourceData:="変換場所!A1:S" & Range("E65536").End(xlUp).Row, _
                                                Version:=xlPivotTableVersion14)
 ☆ Set ピボットテーブル = ピボット範囲.CreatePivotTable(TableDestination:=ワークシート.Name & "ビボット作成!R2C1", _
 ☆                                             TableName:="プロダクトコード", _
 ☆                                             DefaultVersion:=xlPivotTableVersion14)
    With ピボットテーブル
        With .PivotFields("プロダクトコード")
            .Orientation = xlRowField
            .Position = 1
        End With
        With .PivotFields("PCODE")
            .Orientation = xlColumnField
            .Position = 1
        End With
        .AddDataField .PivotFields("決定金額"), "合計 / 決定金額", xlSum
    End With

    With ピボットテーブル
        With .PivotTables("プロダクトコード")
            .CompactLayoutRowHeader = "プロダクトコード/PCODE"
        End With
        .Columns("A:A").EntireColumn.AutoFit
     End With

 エラー内容:実行時エラー'5';プロシージャの呼び出し、または引数が不正です。
 場所は星マークのところです。
 なにとぞ、よろしくお願いします><

< 使用 Excel:Excel2010、使用 OS:Windows7 >


エラーになる行の手前、SourceDataを設定している部分が気になりますね。
これがデータのあるシートのモジュールとして動作するマクロなら良いですが、違うならば、以下の結果がおかしいはず。確認してみてください。
 Range("E65536").End(xlUp).Row

(得たい値は、ワークシート.Range("E65536").End(xlUp).Row ではないかと予想)
(???) 2015/03/13(金) 11:59


 >☆ Set ピボットテーブル = ピボット範囲.CreatePivotTable(TableDestination:=ワークシート.Name & "ビボット作成!R2C1"
 ここの部分

 >☆ Set ピボットテーブル = ピボット範囲.CreatePivotTable(TableDestination:=ワークシート.Name & "!R2C1"
 か
 >☆ Set ピボットテーブル = ピボット範囲.CreatePivotTable(TableDestination:="ビボット作成!R2C1"
 のどちらかではないのか?
(ねむねむ) 2015/03/13(金) 12:41

 (???)さん、ありがとうございました。名前が???と表示されているのでそのままの形で返信します。
 Range("E65536").End(xlUp).Row から
 ワークシート.Range("E65536").End(xlUp).Rowに
 治しましたら治した個所で
 エラー内容:実行時エラー'5';プロシージャの呼び出し、または引数が不正です。
 と出てしまったので元に戻しました。
 ありがとうございました。

 ねむねむさん、ありがとうございました。
 Set ピボットテーブル = ピボット範囲.CreatePivotTable(TableDestination:="ビボット作成!R2C1"
 2個目の方に変更しましたら無事に行きました。ワークシートって記述が邪魔だったのですね。
 なんでかはいまだにわかりませんが(汗

 すみません、新たな問題が発生しました。
 追加で質問なんですが、
  エラー内容:実行時エラー'438';オブジェクトは、このプロパティまたはメソッドを
        サポートしていません。
 というエラーとともに下記の星の場所でVBAが止まってしまいます><
 どうしてなんでしょうか?

     With ピボットテーブル
 ☆     With .PivotTables("プロダクトコード")
            .CompactLayoutRowHeader = "プロダクトコード/PCODE"
        End With
        .Columns("A:A").EntireColumn.AutoFit
    End With
(モヘンジョダロ遺跡) 2015/03/13(金) 13:26

誰かわかる方、いらっしゃいませんか?(汗

(モヘンジョダロ遺跡) 2015/03/13(金) 14:37


助けてください;;

(モヘンジョダロ遺跡) 2015/03/13(金) 16:40


 みんながみんな何も追加情報もないのにただ、上げるだけの書き込みをして上にあげようとしだしたらどうなることやら。
(マルチーズ) 2015/03/13(金) 16:46

エラー指摘の通り、ピボットテーブル名が変なのかと。
「プロダクトコード」なのか「ピボットテーブル」なのか、また余分に指定していませんか?
(???) 2015/03/13(金) 17:19

ピボットテーブル名の問題を解決しても、次の質問が来そうだから、先手を打ってみる。

    Dim ワークシート As Worksheet
    Dim ピボット範囲 As PivotCache
    Dim ピボットテーブル As PivotTable

    Set ワークシート = Worksheets("変換場所")
    Set ピボット範囲 = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
                                                SourceData:="変換場所!A1:S" & Range("E65536").End(xlUp).Row, _
                                                Version:=xlPivotTableVersion14)
    Set ピボットテーブル = ピボット範囲.CreatePivotTable(TableDestination:="ビボット作成!R2C1", _
                                                TableName:="プロダクトコード", _
                                                DefaultVersion:=xlPivotTableVersion14)

    With ピボットテーブル
        With .PivotFields("プロダクトコード")
            .Orientation = xlRowField
            .Position = 1
        End With
        With .PivotFields("PCODE")
            .Orientation = xlColumnField
            .Position = 1
        End With
        .AddDataField .PivotFields("決定金額"), "合計 / 決定金額", xlSum
        .CompactLayoutRowHeader = "プロダクトコード/PCODE"
    End With

    Sheets("ビボット作成").Columns("A:A").EntireColumn.AutoFit
(???) 2015/03/13(金) 18:21

 おはようございます。
 返信遅くなってしまって申し訳ございません。
 ???さんのおかげでエラーも何もなく
 無事に処理ができました。
 本当にありがとうございました。

 ただ今から、どうしてこの記述で動くのか
 じっくり見て理解していこうと思っています。

 本当にありがとうございました。

 追伸
 なかなか回答がつかずほかの方の回答がじゃんじゃんついていって
 とても寂しくなってしまって(時間的な余裕はありました)
 変な追記な書き込みしてしまい
 申し訳ございませんでした;;
(モヘンジョダロ遺跡) 2015/03/16(月) 09:37

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.