ピボットテーブルの備忘録 ① バージョン

テーブルと併せ、最近頻繁にピボットテーブルをマクロで操作している。
そこで今回、備忘録を兼ね、ピボットテーブルについてもまとめてみる。
f:id:Infoment:20200312220440p:plain

マクロでピボットテーブルを作成するようになって、結構な頻度で発生したのが「ピボットテーブルのバージョン違いによるエラー」だ。

職場のExcelは、今でこそほぼバージョンが揃っているが、昔は2010と2013が半々の割合で混在していた。

一方、マクロの記録でピボットテーブルを作成すると、ある引数が必ず登場する。↓ の例で、確認してみよう。

・集計元の表(テーブル)
f:id:Infoment:20200312221035p:plain

・集計結果の表(ピボットテーブル)
f:id:Infoment:20200312221233p:plain

・マクロの記録

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Table_20200302_235127", Version:=6).CreatePivotTable TableDestination:= _
        "Sheet2!R3C1", TableName:="ピボットテーブル11", DefaultVersion:=6

上記の例で言えば、この部分で、いつも苦しめられていた。

DefaultVersion:=6

この数字(「6」)は、ピボットテーブルのバージョンがExcel2016版であることを表している。
従って、他の端末で実行した場合にExcelのバージョンが異なれば、エラーになる恐れがあるのだ。
docs.microsoft.com

そこで個人的に数年前から、ピボットテーブル作成マクロには、必ずこれを添えるようにしている。

Public Property Get PvtVersion() As Long
    Select Case CLng(Application.Version)
        ' 2010の場合。
        Case 14
            PvtVersion = xlPivotTableVersion14
        ' 2013の場合。
        Case 15
            PvtVersion = xlPivotTableVersion15
        ' 2016の場合。
        Case 16
            PvtVersion = 6
    End Select
End Property

すると先程の部分は、このような記載になる。
Excelのバージョンに対応するピボットテーブルのバージョンを、自動的にセットしてくれる。

DefaultVersion:=PvtVersion

おかげさまで、バージョン違いに起因するエラーは無くなった。しかしここから、苦難の連続が始まったわけで。

明日に続きます。

参考まで。