我正在尝试从具有数据透视表的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
答案 0 :(得分:0)
您可以使用数据透视表的showPages方法
信息:PivotTable.ShowPages Method
为页面字段中的每个项目创建一个新的数据透视表报表。每 新的报表将在新的工作表上创建。
语法表达式。 ShowPages(PageField)
expression一个表示数据透视表对象的变量。
[pageField的可选参数。]
代码:
ThisWorkbook.Worksheets("Sheet1").PivotTables(1).ShowPages "name of pagefield"
然后,您可以使用简单的代码遍历这些工作表,并将每张工作表作为电子邮件附件发送。请参阅以下内容,以开始使用然后通过电子邮件发送 Mail from Excel with Outlook (Windows)。
请记住,您可以使用现有代码轻松地引用每个新创建的表格以进行导出
For Each pi In pf.PivotItems
Worksheets(pi.Value) '<==pass this to sub that e-mails
Next pi