首页 > 解决方案 > VBA 将数据透视表的“.ShowDetail”保存到单个工作簿

问题描述

我有一个包含客户列表的 Excel 项目。每个客户每年都有一个总支出,每当我点击每个客户的每一年时,它都会打开一个包含该年信息的动态表。相反,我想为每个客户将结果导出到不同的 excel 文件中。

这是一个例子: 在此处输入图像描述

我见过其他人有同样的问题,但仍然不明白出了什么问题。我没有使用 VBA 的经验,我正在帮助一个朋友,所以也许这是一些我不知道的基本知识。该错误与 ShowDetail 和单元格有关,它可能无法捕获循环中的内容。

 Sub Reports()

    Dim i As Double
    Dim Ini As Double
    Dim Fin As Double

    Application.ScreenUpdating = False

    Sheets("MainTable").Select
    With Sheets("MainTable")

    Ini = Columns(1).Range("A2").End(xlDown).Row
    Fin = .PivotTables(1).PivotFields("Name").VisibleItems.Count

    For i = 1 To Fin

            .Cells(i + Ini, 2).ShowDetail = True

            Sheets(1).Name = .Cells(i + Ini, 1).Value

        ActiveSheet.Select

        ActiveSheet.Move

    Application.DisplayAlerts = False

                ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & ActiveSheet.Name

                    ActiveWorkbook.Close False

                        Next i

            End With

    Application.ScreenUpdating = True

    End Sub

我希望这可以为每个客户将结果导出到不同的 excel 文件中。

提前致谢!

标签: excelvba

解决方案


问题:

  • 第一个是对其值设置为的单元格的错误引用.ShowDetails
  • 然后它会Sheet(1)在循环中每次重命名。

代码:

Sub Reports()

    Dim i As Double
    Dim Ini As Double
    Dim Fin As Double
    Dim wb As Workbook: Set wb = ThisWorkbook

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

With Sheets("MainTable")

    Ini = .Columns(1).Range("A2").End(xlDown).row
    Fin = .PivotTables(1).PivotFields("Name").VisibleItems.Count

    For i = 1 To Fin

            .Cells(i + Ini - Fin - 1, 2).ShowDetail = True

            ActiveSheet.Name = .Cells(i + Ini - Fin - 1, 1).Value & .Cells(Ini - Fin - 1, 2).Value
            ActiveSheet.Move
            ActiveWorkbook.SaveAs fileName:=ThisWorkbook.path & "\" & ActiveSheet.Name
            ActiveWorkbook.Close False

     Next i

End With

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

End Sub

代码将在 Pivot 上工作,该 Pivot 开始于A2并看起来类似于

在此处输入图像描述

您可以为其他年份创建另一个循环。作为示例,我创建了这个简短的 Pivot。


推荐阅读