Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2013)
複数(データは同一)のピボットテーブルのデータソースの変更を一括で行いたい
投稿日時: 18/04/12 16:09:59
投稿者: TANPOPO

Excelのブック内に複数のシートがあり、
その中に、他ブックのデータソースを参照しているピボットテーブルがあります。
 

ブック名:PIBO

シート名:
ピボ1
ピボ2
ピボ3
変更

ブック名:DATA

シート名:2018
テーブル名:AAA

ピボ1・ピボ2・ピボ3は、
”DATA”の”2018”の”AAA”をデータソースとしています。
 
データソースを一括で変更したい場合、
”変更”のA1にフルパスを入力すれば、変更できるようにしたいと考えております。
 
ご教授いただければ幸いです。
宜しくお願い致します。
 

回答
投稿日時: 18/04/13 08:43:50
投稿者: mattuwan44

>”変更”のA1にフルパスを入力すれば、変更できるようにしたいと考えております。
 
シート名とテーブル名は同じなのですか?
 
フルパスを手入力するのですか?
エクスプローラ的な画面から選択した方が確実で便利かと思いますがいかがでしょうか?
 
 
>データソースを一括で変更したい場合、
とりあえず、マクロの記録でコードを探ってみましたか?

投稿日時: 18/04/13 16:16:34
投稿者: TANPOPO

mattuwan44さん
 
コメントいただきありがとうございます。
>”変更”のA1にフルパスを入力すれば、変更できるようにしたいと考えております。
 >シート名とテーブル名は同じなのですか?
シート名とピボットテーブル名は同じにしようかと思っています。
  
>フルパスを手入力するのですか?
>エクスプローラ的な画面から選択した方が確実で便利かと思いますがいかがでしょうか?
 フルパスは手入力を考えておりましたが、確かにエクスプローラ画面のほうが確実だと思います。
  
>データソースを一括で変更したい場合、
>とりあえず、マクロの記録でコードを探ってみましたか?
色々探ってみているものの、自分の力ではピボットを作るのが精一杯で、
データソース変更まで辿りつかず、質問させていただいた次第です。
 
フルパスを調べるための式がやっとできた状態です。

="'"&SUBSTITUTE(LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-1) & MID(CELL("filename"),SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1),"C:","")&"'!"

回答
投稿日時: 18/04/14 09:14:54
投稿者: simple

>データソース変更まで辿りつかず、質問させていただいた次第です。
え?
「データソースの変更」という既定のメニューを使うだけですけど。
 
フォルダ名やファイル名は変えないという前提に立って、
テーブル名だけを可変にするようにすれば、もっと簡単にできるのではないですか?
(DATAブックを開いておけば、フォルダ部分も指定不要ですね。)
 
また、マクロ記録をとれば解りますが、二つ目以降は、
ActiveSheet.PivotTables("ピボットテーブル2").ChangePivotCache ("Sheet1!ピボットテーブル1")
のようにPivotCacheを使い回すことができます。参考にして下さい。

投稿日時: 18/04/17 14:30:39
投稿者: TANPOPO

simple さん、ありがとうございます。
確かに、2つ目以降
ActiveSheet.PivotTables("ピボットテーブル2").ChangePivotCache ("Sheet1!ピボットテーブル1")
ができ、こちらを応用すればやりがいことができそうです。
 
ありがとうございました。