数据透视表中的Excel VBA宏

时间:2018-07-12 06:28:25

标签: vba pivot

我正在尝试从具有数据透视表的Excel数据透视表生成少量报告,并尝试编写VBA代码以开发宏,以便它自动为需要将报告发送至的25个分支生成报告。可能使用宏,我也可以使电子邮件自动化。

任何人都可以从哪里开始?

我从数据透视表中获取了以下代码

Sub printit()
    Dim pt As PivotTable, pi As PivotItem, pf As PivotField
    Dim lLoop As Long

    Set pt = Sheet1.PivotTables(1)
    Set pf = pt.PageFields(1)

    For Each pi In pf.PivotItems
        Sheet1.PivotTables(1).PageFields(1).CurrentPage = pi.Value
        Sheet1.PrintOut
        lLoop = lLoop + 1
    Next pi
End Sub

根据工作表我已更改为关注

Sub PrintAllPivotFilters()
    Dim pt As PivotTable, pi As PivotItem, pf As PivotField
    Dim lLoop As Long

    Set pt = Sheet3.Certifications
    Set pf = pt.Branch

    For Each pi In pf.PivotItems
        Sheet1.Certifications.Branch.CurrentPage = pi.Value
        Sheet1.PrintOut
        lLoop = lLoop + 1
    Next pi
End Sub

1 个答案:

答案 0 :(得分:0)

您可以使用数据透视表的showPages方法

  

信息:PivotTable.ShowPages Method

     

为页面字段中的每个项目创建一个新的数据透视表报表。每   新的报表将在新的工作表上创建。

     

语法表达式。 ShowPages(PageField)

     

expression一个表示数据透视表对象的变量。

     

[pageField的可选参数。]


代码:

ThisWorkbook.Worksheets("Sheet1").PivotTables(1).ShowPages "name of pagefield"

有关完整示例,请参见herehere

然后,您可以使用简单的代码遍历这些工作表,并将每张工作表作为电子邮件附件发送。请参阅以下内容,以开始使用然后通过电子邮件发送 Mail from Excel with Outlook (Windows)

请记住,您可以使用现有代码轻松地引用每个新创建的表格以进行导出

For Each pi In pf.PivotItems
    Worksheets(pi.Value) '<==pass this to sub that e-mails   
Next pi