【问题标题】:Excel VBA Macro from Pivot table数据透视表中的 Excel VBA 宏
【发布时间】:2018-07-12 06:28:25
【问题描述】:

我正在尝试从拥有数据透视表的 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

【问题讨论】:

  • 这个,lLoop = lLoop + 1,没有做任何事情。

标签: vba pivot


【解决方案1】:

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

信息:PivotTable.ShowPages Method

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

语法表达式。 ShowPages(PageField)

表达式 表示数据透视表对象的变量。

[pageField的可选参数]


代码:

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

如需更完整的示例,请参阅 here 或 here。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    相关资源
    最近更新 更多