2012-03-02 5 views
0

am私はデータ接続を介して1つの国のデータをインポートし、そのデータでピボットと他のシートを再描画してマクロを実行し、そのExcelレポートを閉じて保存します国。例えばドイツ。私は同じプロセスが起こる他の国のための別の31のテンプレートを持っています。 31個のテンプレートの違いは、データ接続(データベース用のレコードを取得する)と、Report_Germanyのように保存されているファイル名のデータベースSQLクエリです。オートメーション31テンプレートまたは1テンプレート

SSISでは、単にExcelファイルを開き、各国のマクロを実行するvbsスクリプトを呼び出すプロセスタスクを使用しています。 31種類のSSISタスクを作成する必要はありません。

とにかく、1つのテンプレートを使用して、同じディレクトリに必要な31のExcelレポートを作成できますか?

答えて

1

はい、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 

このアプローチの欠点は、各ワークブックにすべてのデータが含まれていることです。

+0

良い考えですが、1つのワークシートですべての国のデータを一緒に扱うことは、Excelにとっては大きすぎます。データベースから各国のデータを取り込み、ピボットのレポートを更新し、第1ファイルをドイツ、第2セットのデータを取り込んで保存し、それを更新して英国として保存するものが必要です。 1つのテンプレートと1つのマクロ。変数をデータ接続(select * from table where country = 'Country 1')に渡すことと、ファイルを保存する(File_Country1として保存する)ことについて考えてみましょう。 –

+0

これは良いアプローチのように思えますし、複数のレポートを持つ1つのテンプレートを持つことができます。 –

関連する問題