[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロでのピボットの作成』(初心者)
お世話になります。
下記コードを書いたマクロブックを別のコマンドで開け、
別のシステムからダウンロードしたばかりの「在庫一覧」というエクセルファイルを
加工し、ピボットテーブルを作成したいのですが・・・
下記、 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.