はい、1つのテンプルを使用して複数のレポートを作成することは可能です。
すべてのピボットテーブルには国と同等のレポートフィルタが必要で、すべてのデータを1つのブックに取り込む必要があります。
次に、フィルタを設定する国を繰り返しループバックし、別の国名でブックを保存することができます。
これを達成するための基本的なコードを以下に示します。
Sub Update_Pivot_filter()
Dim StaticArray(1 To 3) As String
Dim strName As String
Dim lCount As Long
StaticArray(1) = "Germany"
StaticArray(2) = "France"
StaticArray(3) = "Italy"
For lCount = LBound(StaticArray) To UBound(StaticArray)
ActiveWorkbook.Sheets("Sheet1").PivotTables("PivotTable1"). _
PivotFields("Name").CurrentPage = StaticArray(lCount)
' Change report filter on a pivot table
ActiveWorkbook.RefreshAll
' Refresh all pivot tables
ActiveWorkbook.SaveAs Filename:= _
"C:\Temp\Report_" & StaticArray(lCount) & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
' Save the file with a name matching the filter name
MsgBox StaticArray(lCount)
Next lCount
End Sub
このアプローチの欠点は、各ワークブックにすべてのデータが含まれていることです。
良い考えですが、1つのワークシートですべての国のデータを一緒に扱うことは、Excelにとっては大きすぎます。データベースから各国のデータを取り込み、ピボットのレポートを更新し、第1ファイルをドイツ、第2セットのデータを取り込んで保存し、それを更新して英国として保存するものが必要です。 1つのテンプレートと1つのマクロ。変数をデータ接続(select * from table where country = 'Country 1')に渡すことと、ファイルを保存する(File_Country1として保存する)ことについて考えてみましょう。 –
これは良いアプローチのように思えますし、複数のレポートを持つ1つのテンプレートを持つことができます。 –