[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA 可変ファイルにピボットテーブル作成』(ピノ)
いつも参考にさせて頂いております。
VBA初心者です。
ピボットテーブルを作成しています。
毎回、違うファイルにピボットテーブルを作成したい為、
ピボット更新ではなく1からピボット作成をしようと思っています。
以下、記録で1から作成し、
毎回表範囲を取得できるように作成してみたのですが、
下記部分でエラーになってしまいます。
★エラー箇所
With ActiveSheet.PivotTables("ピボットテーブル2")
※エラー内容
実行時エラー番号1004
WorkSheetクラスのPivottableプロパティを取得できません。
ピボットキャッシュまではうまくいくのですが…。
なぜだかわかりましたら教えてください。
なお、アクティブワークブックは、毎回違うので指定していません。
Sub ピボットテーブル作成()
'変数宣言(1行列目の最終行列取得) LR = Cells(Rows.Count, 1).End(xlUp).Row LC = Cells(1, Columns.Count).End(xlToLeft).Column
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "店別データ!R1C1:R" & LR & "C" & LC, Version:=6).CreatePivotTable TableDestination:= _ "Sheet1!R3C1", TableName:="ピボットテーブル2, DefaultVersion:=6"
Sheets("Sheet1").Select Cells(3, 1).Select
’★エラー箇所
With ActiveSheet.PivotTables("ピボットテーブル2") .InGridDropZones = True .RowAxisLayout xlTabularRow End With With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("出荷日 ") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品コード") .Orientation = xlRowField .Position = 2 End With With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品名カナ ") .Orientation = xlRowField .Position = 3 End With With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("ケース入数") .Orientation = xlRowField .Position = 4 End With With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("ボール入数") .Orientation = xlRowField .Position = 5 End With ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル2").PivotFields("引当数個数"), "合計 / 引当数個数", xlSum Columns("A:A").ColumnWidth = 11.1
Range("B4").Select ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("出荷日 ").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("入力年月日").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("入力時間").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("伝票NO").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("専伝NO ").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("配送ルートNO").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("配送順位").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("企業コード").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("得意先管理コード").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("得意先店舗コード").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("得意先コード").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("得意先名カナ ").Subtotals _ = Array(False, False, False, False, False, False, False, False, False, False, False, False _ ) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("物流センタコード").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("出庫物流センタコード").Subtotals = _ Array(False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品コード").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品名カナ ").Subtotals = _ Array(False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("ケース入数").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("ボール入数").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("入力数量 ").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("数量単価区分").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("引当数個数").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("EOS区分").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("伝票区分").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("入力担当コード").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("仕入先コード").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("JAN商品コード").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("ITF商品コード").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("品切れ区分").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("単価 ").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("売上金額 ").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("店頭売価").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("相手商品コード").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("ロケーションコード").Subtotals = Array _ (False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("摘要 ").Subtotals = _ Array(False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields(" ").Subtotals = Array(False, _ False, False, False, False, False, False, False, False, False, False, False) Columns("A:F").Select
End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
(もこな2 ) 2020/05/22(金) 18:13
毎回、同じ点、異なる点を説明してください。
(マナ) 2020/05/22(金) 19:39
毎回同じ点…ピボットを作成するファイルが存在するフォルダ
異なる点…ピボットを作成するファイル
最終的にはRPAで本作業を行うため、
システムで抽出したファイルを参照して、
エクセルマクロでピボットテーブルを作成したいと思ってます。
(ピノ) 2020/05/23(土) 11:23
1)シート名は同じですか 2)データの列数は同じですか 3)データの行数は同じですか 4)見出し名は同じですか 5)見出しの順番は同じですか
まずは、ここまで教えて下さい。
(マナ) 2020/05/24(日) 10:01
有難うございます。
3)行数以外は毎回固定になります。
1)シート名は同じですか …毎回同じです。
2)データの列数は同じですか …毎回同じです。
3)データの行数は同じですか …毎回変わります。
4)見出し名は同じですか …毎回同じです。
5)見出しの順番は同じですか …毎回同じです。 (ピノ) 2020/05/25(月) 10:05
6)新規シートですか、既存のシートですか。 7)既存のシートの場合、シート名は決まっていますか。
(マナ) 2020/05/25(月) 19:45
8)元データのシートの他にも、シートはありますか。
(マナ) 2020/05/25(月) 21:04
有難う御座います。
マクロ実行前のブックに元データの他にシートはありません。
(ピノ) 2020/05/26(火) 18:10
9)1度のマクロ実行で処理するファイルは、1つだけですか。 10)マクロは、ピボット作成して、それで終わりですか。
(マナ) 2020/05/26(火) 18:27
(準備:雛形ブックの作成) 1)新規ブックに 何でもよいの適当な元データを用意する 2)手作業で、1)を元に、ピボットを作成する。 3)元データのシート名を「data」に変更する 4)ピボットのシート名を「pvt」に変更する 5)下記のマクロを、標準モジュールにコピペする 6)これを雛形ブック(マクロブック)として保存する
(マクロ実行) 1)雛形ブックを開く 2)Alt+F8からマクロを選んで実行 3)必要なら、雛形ブックを別名保存(手作業またはマクロで)
Sub test() Dim wb As Workbook Dim wsData As Worksheet Dim pvt As PivotTable
With Application.FileDialog(msoFileDialogFilePicker) If .Show Then Set wb = Workbooks.Open(.SelectedItems(1)) Else Exit Sub End If End With
Set wsData = ThisWorkbook.Sheets("data") Set pvt = ThisWorkbook.Sheets("pvt").PivotTables(1)
wsData.UsedRange.Clear wb.Sheets(1).UsedRange.Copy wsData.Cells(1) pvt.SourceData = wsData.Cells(1).CurrentRegion.Address(, , xlR1C1, True) wb.Close False
End Sub
(マナ) 2020/05/26(火) 22:41
ご丁寧にご教授いただきありがとうございます。
試してみたいと思います!!!
なんどもなんどもすみませんでした。助かりました。
(ピノ) 2020/05/28(木) 22:22
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.