🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

5514閲覧

VBA - 別のワークブックにピボットテーブルを作るマクロ

koyamashinji

総合スコア45

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/11/25 08:28

ワークブック1にあるデータについて、PivotCacheを作成し、
別のワークブック2にそのPivotTableを作成したいのですが、★でエラーになってしまいます。

引数TableDestinationには、元データのあるワークブックオブジェクトしか参照できないのでしょうか。
調べてもそれらしいやり方がわからず・・・他のやり方があれば是非ご教示頂きたく。

Macro

1Sub test() 2 3Dim wb As Workbook 4Dim new_wb As Workbook 5Dim ws1 As Worksheet 6 7Set wb = Workbooks("ワークブック1.xlsm") 8Set ws1 = wb.Worksheets("シート1") 9 10'ピボットキャッシュを作成 11Dim pvCacheObj As PivotCache 12Set pvCacheObj = wb.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=ws1.Range("A1").CurrentRegion) 13 14'新規ワークブックを作成 15Set new_wb = Workbooks.Add 16ActiveSheet.Name = "シート2" 17new_wb.SaveAs "ワークブック2" 18 19'ピボットテーブルを作成 20pvCacheObj.CreatePivotTable TableDestination:=new_wb.Sheets("シート2").Range("A1"), TableName:="ピボットテーブル" ★ 21 22End Sub

error

1実行時エラー'5' 2プロシージャの呼び出し、または引数が不正です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

PivotCacheが、ワークブック別に管理されているそうなので、手順を入れ替えましょう。

CreatePivotTableメソッドについて調べてみる

ワークブック2を作成してから、ワークブック2にPivotCacheを作成してみてください。

投稿2020/11/25 11:07

YT0014

総合スコア1748

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koyamashinji

2020/11/30 11:22

ご助言有難うございました。 ワークブック2を作成してから、ワークブック2にPivotCacheを作成したところ、正常に動きました。
YT0014

2020/11/30 12:37

解決おめでとうございます。お役に立てたのでしたら、何よりです。
guest

0

YT0014様の仰るとおり新しいワークブックを用意する→新しいワークブック上にピボットキャッシュを作る、というふうに順番を入れ替えると、正常動作しました。

Sub test() Dim wb As Workbook Dim new_wb As Workbook Dim ws1 As Worksheet Set wb = Workbooks("ワークブック1.xlsm") Set ws1 = wb.Worksheets("シート1") '新規ワークブックを作成 Set new_wb = Workbooks.Add ActiveSheet.Name = "シート2" new_wb.SaveAs "ワークブック2" 'ピボットキャッシュを作成 Dim pvCacheObj As PivotCache Set pvCacheObj = new_wb.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=ws1.Range("A1").CurrentRegion) 'ピボットテーブルを作成 pvCacheObj.CreatePivotTable TableDestination:=new_wb.Sheets("シート2").Range("A1"), TableName:="ピボットテーブル" End Sub

投稿2020/11/30 11:22

koyamashinji

総合スコア45

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問