立即注册 登录
公卫人 返回首页

asteriod的个人空间 https://www.epiman.cn/?12177 [收藏] [复制] [RSS]

日志

pivote table 备忘录

热度 2已有 1062 次阅读2010-1-20 10:08

最近在开发一个数据分析系统,为减轻工作量,使用了一个OFFICE2003的标准控件PivotTable,现把查到一些资料汇总如下,以便后续开发时参考:

(1)对于 Access 2003,该文件的默认位置是 C:/Program Files/Common Files/Microsoft Shared/Web Components/11;对于 Access 2002,默认位置是 C:/Program Files/Common Files/Microsoft Shared/Web Components/10。
(2)开发帮助文档默认位置:C:\Program Files\Common Files\Microsoft Shared\Web Components\11\2052\OWCVBA11.CHM

(3)建立对dll文件的引用后,可以直接声明对象:

Dim ptable As PivotTable

(4)常用代码参考(转)

向行区域、列区域和明细区域添加字段

下面的代码将 CustomerID、ShipVia 和 Freight 字段添加至窗体(基于“Orders”表)“数据透视表”视图的行、列和明细区域。

Dim fset1, fset2, fset3 As PivotFieldSet

Set fset1 = Me.PivotTable.ActiveView.FieldSets("CustomerID")
Set fset2 = Me.PivotTable.ActiveView.FieldSets("ShipVia")
Set fset3 = Me.PivotTable.ActiveView.FieldSets("Freight")

Me.PivotTable.ActiveView.RowAxis.InsertFieldSet fset1
Me.PivotTable.ActiveView.ColumnAxis.InsertFieldSet fset2
Me.PivotTable.ActiveView.DataAxis.InsertFieldSet fset3

添加总计字段

下面的代码创建了用于计算 CustomerID 数目的汇总字段,并将该字段添加至视图的明细区域。

Me.PivotTable.ActiveView.AddTotal "Count Of Customers", _
    Me.PivotTable.ActiveView.FieldSets("CustomerID").Fields("CustomerID"), _
    plFunctionCount

Me.PivotTable.ActiveView.DataAxis.InsertTotal _
    Me.PivotTable.ActiveView.Totals("Count Of Customers")


添加计算汇总字段

下面的代码创建了一个总计字段用于计算 7% 运费值,并将该字段添加至视图的明细区域。表达式参数将接受任何有效、带有“安全”Visual Basic for Applications (VBA) 函数的 Microsoft Jet Database Engine 表达式。

Me.PivotTable.ActiveView.AddCalculatedTotal "FTax", "运费税", "[Freight] * 0.07"

Me.PivotTable.ActiveView.DataAxis.InsertTotal Me.PivotTable.ActiveView.Totals("FTax") 注释   运行此代码多于一次将导致错误信息。

删除视图中的所有字段

下面的代码删除“数据透视表”视图中的所有字段和汇总,使之空白。其基本思想是循环各个坐标轴并删除所有总计及字段。

 注释   此示例代码并不删除应用于字段和汇总的格式。

Dim ptable As PivotTable
Set ptable = Me.PivotTable
With ptable.ActiveView
    Do While .RowAxis.FieldSets.Count > 0
        .RowAxis.RemoveFieldSet 0
    Loop

    Do While .ColumnAxis.FieldSets.Count > 0
        .ColumnAxis.RemoveFieldSet 0
    Loop
    Do While .FilterAxis.FieldSets.Count > 0
        .FilterAxis.RemoveFieldSet (0)
    Loop
    Do While .DataAxis.FieldSets.Count > 0
        .DataAxis.RemoveFieldSet (0)
    Loop
    Do While .DataAxis.Totals.Count > 0
        .DataAxis.RemoveTotal (0)
    Loop
End With

 (5)建立对dll文件引用的代码:

On Error GoTo Err_cmdopen:
References.AddFromFile "C:\OWC10.DLL" (这里写成绝对路径了,打包安装时可把dll文件复制到这个路径下)。

   
Err_cmdopen:
Exit Sub

 

(6)透视表导出代码:

参考了部分管方的代码,原理就创建excel对象,拷贝and粘贴

 Me.子窗体.SetFocus    '把焦点移动子窗体上  Child28要操作的子窗体的名称
Dim xlApp
Dim XlBook
Dim pTable As OWC10.PivotTable

Dim PhotoPath As String
Dim exlpath As String
    Dim oExcel As Object
Dim oBook As Object
Dim i As Integer


exlpath = dlgGetFile(, "excel(*.xls)" & vbNullChar & "*.xls" & vbNullChar & vbNullChar, , , "", "保存文件为xls", , False)
 If exlpath = "" Then Exit Sub
Set pTable = Me.子窗体.Form.PivotTable

Set xlApp = CreateObject("Excel.Application.11")
Set XlBook = xlApp.Workbooks.Add

pTable.Copy pTable.ActiveView
xlApp.ActiveSheet.Paste
xlApp.Selection.Columns.AutoFit
XlBook.SaveAs ("" & exlpath & "")

xlApp.Quit

2

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

手机版|会员|至尊|接种|公卫人 ( 沪ICP备06060850号-3 )

GMT+8, 2024-5-16 14:52 , Processed in 0.027037 second(s), 6 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部