将 Pivot table 源更改为不同的工作簿(基于单元格值)

Change a Pivot table Source to a different workbook (based on cell value)

我必须每周更新一个包含大约 15 个工作簿的数据库。

我想出的解决方案是用 pivot tables 排列数据(每个文件一个 pivot table),然后用 VBA 代码合并它们将数据复制到另一个工作簿(已经完成)。

问题是我需要手动更改所有这些文件的数据源,而且打开每个文件都需要时间,因为它们很重 (10mb)。

最好的代码是更改每个文件的源代码,查看另一个文件夹(4 月第 1、2、3、4 周 // 5 月第 1、2、3、4 周...)

示例文件 1:

来源 4 月第 3 周:'C:\ACreative\April[Coop.XLS]Sheet1'!$A$6:$BJ$30000

来源 4 月第 4 周:'C:\ACreative\April[Coop.XLS]Sheet1'!$A$6:$BJ$30000

来源 5 月第 1 周:'C:\ACreative\May[Coop.XLS]Sheet1'!$A$6:$BJ$30000

来源 5 月第 2 周:'C:\ACreative\May[Coop.XLS]Sheet1'!$A$6:$BJ$30000

示例文件 2:

来源 4 月第 3 周:'C:\ACreative\April[File2.XLS]Sheet1'!$A$6:$BJ$30000

来源 4 月第 4 周:'C:\ACreative\April[File2.XLS]Sheet1'!$A$6:$BJ$30000

来源 5 月第 1 周:'C:\ACreative\May[File2.XLS]Sheet1'!$A$6:$BJ$30000

来源 5 月第 2 周:'C:\ACreative\May[File2.XLS]Sheet1'!$A$6:$BJ$30000

我认为的一个解决方案是在单元格上编写 (\April\ ; \May),并根据 "path+cell value" 更新源代码,但我愿意另一个。

谢谢!!!

Macro Recorder是你的朋友。

只要您知道不同的数据源都将滑入有问题的枢轴 table,请尝试下面的 VBA 代码片段以在同一工作簿或其他工作簿之间快速切换范围。

Sub ChangeDataSource()
    Dim DataSource As String
    Dim Green As Long, Red As Long
    Green = -11489280
    Red = -16776961

On Error GoTo ErrHandle

    DataSource = Range("DataSource").Value
    ActiveSheet.PivotTables("PivotTable1").ChangePivotCache ActiveWorkbook. _
        PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataSource, Version _
        :=xlPivotTableVersion15)

    Range("DataSource").Font.Color = Green
    Range("CurrentDataSource").Value = DataSource
    Calculate

    GoTo Success

ErrHandle:
    MsgBox ("DataSource is not valid.")
    Range("DataSource").Font.Color = Red

Success:

End Sub

注意我在本地工作簿中使用了一些命名范围来辅助宏。我上传了 some sample files here 而不是上传屏幕截图,这样您就可以自己四处看看,而不是试图解释论坛上的静态图片 post。

希望对您有所帮助!