[[20141009100633]] 『マクロでのピボットの作成』(初心者) ページの最後に飛ぶ

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

 

『マクロでのピボットの作成』(初心者)

お世話になります。
下記コードを書いたマクロブックを別のコマンドで開け、
別のシステムからダウンロードしたばかりの「在庫一覧」というエクセルファイルを
加工し、ピボットテーブルを作成したいのですが・・・
下記、 ActiveSheet.Cells(1, 9).Selectというところで
rangeクラスのselectメソッドが失敗しました(エラー1004)となってしまいます。
原因は何でしょうか?

Private Sub Workbook_Open()

With Workbooks.Open(CreateObject("WScript.Shell").SpecialFolders("DeskTop") & "\在庫一覧.xlsx").Sheets("在庫一覧")

    Columns("A:Y").Select
      Columns("A:Y").Select
    Selection.ColumnWidth = 12
    Columns("A:Y").EntireColumn.AutoFit
    Columns("A:Y").EntireColumn.AutoFit
    Cells.EntireColumn.AutoFit
    Application.Goto Reference:="R1C9"
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "在庫一覧!R1C1:R1894C8", Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="在庫一覧!R1C9", TableName:="ピボットテーブル1", DefaultVersion _
        :=xlPivotTableVersion14

 ActiveSheet.Cells(1, 9).Select

    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("日付")
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("部品番号")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("保管場所")
        .Orientation = xlRowField
        .Position = 2
    End With
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("入庫")
        .Orientation = xlRowField
        .Position = 3
    End With
    ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _
        "ピボットテーブル1").PivotFields("入庫"), "データの個数 / 入庫", xlCount
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("データの個数 / 入庫")
        .Caption = "合計 / 入庫"
        .Function = xlSum
    End With
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("出庫")
        .Orientation = xlRowField
        .Position = 3
    End With
    ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _
        "ピボットテーブル1").PivotFields("出庫"), "データの個数 / 出庫", xlCount
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("データの個数 / 出庫")
        .Caption = "合計 / 出庫"
        .Function = xlSum
    End With
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("在庫")
        .Orientation = xlRowField
        .Position = 3
    End With
    ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _
        "ピボットテーブル1").PivotFields("在庫"), "データの個数 / 在庫", xlCount
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("データの個数 / 在庫")
        .Caption = "合計 / 在庫"
        .Function = xlSum
    End With
    ActiveWorkbook.ShowPivotTableFieldList = False
    ActiveSheet.PivotTables("ピボットテーブル1").ShowTableStyleColumnStripes = True
    ActiveSheet.PivotTables("ピボットテーブル1").ShowTableStyleColumnStripes = False
    ActiveSheet.PivotTables("ピボットテーブル1").ShowTableStyleRowStripes = True
    ActiveSheet.PivotTables("ピボットテーブル1").ShowTableStyleRowStripes = False
    ActiveSheet.PivotTables("ピボットテーブル1").TableStyle2 = "PivotStyleMedium1"
    ActiveSheet.PivotTables("ピボットテーブル1").ShowTableStyleColumnStripes = True
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("摘要").Subtotals = Array( _
        False, False, False, False, False, False, False, False, False, False, False, False)
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("日付").Subtotals = Array( _
        False, False, False, False, False, False, False, False, False, False, False, False)
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("保管場所").Subtotals = Array( _
        False, False, False, False, False, False, False, False, False, False, False, False)
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("部品番号").Subtotals = Array( _
        False, False, False, False, False, False, False, False, False, False, False, False)
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("XHEAD 2::NAME").Subtotals _
        = Array(False, False, False, False, False, False, False, False, False, False, False, False _
        )
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("入庫").Subtotals = Array( _
        False, False, False, False, False, False, False, False, False, False, False, False)
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("出庫").Subtotals = Array( _
        False, False, False, False, False, False, False, False, False, False, False, False)
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("在庫").Subtotals = Array( _
        False, False, False, False, False, False, False, False, False, False, False, False)

    Cells.Find(What:="全体の合計 / 在庫", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate
    Cells.Find(What:="全体の合計", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, MatchByte:=False, SearchFormat:=False).Activate

    Range("R6").Select
    ActiveWindow.SmallScroll Down:=64
    Application.WindowState = xlNormal
    ActiveWindow.SmallScroll Down:=-32
    Range("J42").Select

    Range("J4").Select
    With ActiveWindow
        .SplitColumn = 0
        .SplitRow = 1
    End With
    ActiveWindow.FreezePanes = True
    Columns("A:H").Select
    Range("H1").Activate
    Selection.EntireColumn.Hidden = True
    Application.Width = 959
    Application.Height = 504.5

    ActiveWindow.FreezePanes = True
Application.ScreenUpdating = True

 Dim Filename As String
  Filename = Format(Date, "yymmdd") & ".xlsx"
  ActiveWorkbook.SaveAs "C \Desktop\在庫一覧" & Filename
 ActiveWorkbook.Close

    End With

End Sub

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


 見た感じ使っていないようなので、その行を削除して問題あるでしょうか。
 Pivot を作成した位置として指定しているようなので、作成後に選択する必要は
 ないと思うのですが。
(Mook) 2014/10/09(木) 12:58

 マクロの記録使って作成したのですよね? 
 フィールドリストを見る為にそこをクリックしたのだと思いますのでMookさんのおっしゃるとおり必要なさそうです

 >ActiveSheet.PivotTables("ピボットテーブル1").ShowTableStyleColumnStripes = True
 >ActiveSheet.PivotTables("ピボットテーブル1").ShowTableStyleColumnStripes = False
 >ActiveSheet.PivotTables("ピボットテーブル1").ShowTableStyleRowStripes = True
 >ActiveSheet.PivotTables("ピボットテーブル1").ShowTableStyleRowStripes = False
 ここも特に必要なさそうですが…
 (ちなみにピボットテーブルをVBAで扱うのは、Tasanさんの「雨のち晴れ」サイトがおすすめです)

 これは私見ですが、ピボットにする必要が特になく結果だけ表示できればいいのであれば、元データからVBAで作った方が楽ですし、メンテしやすいです
(まお) 2014/10/09(木) 14:36

コメント返信:

[ 一覧(最新更新順) ]


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