Access VBA:将表导出到 Excel 2010 数据透视表

Posted

技术标签:

【中文标题】Access VBA:将表导出到 Excel 2010 数据透视表【英文标题】:Access VBA: Export table to Excel 2010 pivot table 【发布时间】:2013-04-25 21:25:19 【问题描述】:

我目前有下面的代码,它将两个数据表保存到两个单独工作表上的 Excel 工作簿中,然后打开工作簿:

Dim outputFileName As String
Dim outputFile As String
outputFile = "Export_" & Format(Date, "yyyyMMdd") & Format(Time, "_hhmm") & ".xlsx"
outputFileName = CurrentProject.Path & "\" & outputFile
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Callouts", outputFileName, True
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Members", outputFileName, True

'Load Excel
Set appExcel = New Excel.Application
Set wbkOutput = appExcel.Workbooks.Open(outputFileName)

'Show excel window
appExcel.Visible = True

我想添加一些代码来创建数据透视表以在 excel 中显示数据,但我不确定如何执行此操作 - 有人可以帮忙吗? :-)

【问题讨论】:

“将电子表格格式化为数据透视表”是什么意思?是否要创建基于数据表的数据透视表? 这可能是我想要做的,但我可能有错误的术语 - 基本上我希望代码运行,以便当 excel 打开时,它会在数据透视表中显示导出的数据。谢谢。 好的,让我尝试另一种方法:您是要根据表中已有的数据创建数据透视表,还是要格式化数据,逐个单元格地显示类似于的数据透视表? 好的,重新阅读规范后,我想根据表中已有的数据创建一个数据透视表(对不起,我以前从未使用过数据透视表并且感到困惑它具有基本的列排序)。我会相应地编辑我的问题。 【参考方案1】:

这是一个创建数据透视表的示例代码:

...
Dim aSheet as Worksheet
Set aSheet = ThisWorkbook.Sheets.Add
ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
                                SourceData:="Sheet1!A1:D1000",
                                Version:=xlPivotTableVersion12). _
    CreatePivotTable TableDestination:=aSheet.Name&"!A1", _
                     TableName:="YourPivotTable", _
                     DefaultVersion:=xlPivotTableVersion12
ThisWorkbook.Sheets(aSheet.Name).Select
' Add the column field (the name of the pivot field is one of your data table) '
With ActiveSheet.PivotTables("YourPivotTable").PivotFields("columnHeaderField")
    .Orientation = xlColumnField
    .Position = 1
End With
' Add the row field (the name of the pivot field is one of your data table) '
With ActiveSheet.PivotTables("YourPivotTable").PivotFields("rowHeaderField")
    .Orientation = xlRowField
    .Position = 1
End With
' Add the data field
With ActiveSheet.PivotTables("YourPivotTable")
    .AddDataField .PivotFields("aValueField"), "Sum of a value", xlSum
    .AddDataField .PivotFields("anotherValueField"), "Sum of another value", xlSum
End With
...

希望对你有帮助

【讨论】:

我正在使用此代码,但什么也没发生,代码运行成功,Excel 文件创建成功,但工作表中没有进行数据透视。我首先填充源数据,然后尝试制作数据透视表。源数据已创建,但未创建数据透视。知道为什么吗?【参考方案2】:

不确定您是否最终发现它,但是,在我的代码中,如果我使用位置和 xlrow/column 字段也不会发生任何事情。 我摆脱了它们,只对 xlcolumnfield 使用 .orientation = 1,对 xlrowfield 使用 2,对过滤使用 3,对 AddDataField 使用 4。 我没有声明位置,Excel本身根据我编写代码的顺序调整位置。 话虽如此,我却坚持使用公式:我无法将其从计数更改为总和;我尝试仅重命名该值并且似乎有效,因为在字段列表中它显示“...的总和”,但在枢轴本身中我仍然得到计数...

【讨论】:

以上是关于Access VBA:将表导出到 Excel 2010 数据透视表的主要内容,如果未能解决你的问题,请参考以下文章

基于单击命令按钮将表从 Access 导出到 Excel

在Access和MSSqlserver里都有将表直接导出到Excel的工具

将 Access VBA 记录集导出到 Excel 中的单行

使用 VBA 将数据从 Excel 导出到 Access

Excel VBA 导出到 Access:ADO 错误

MS Access导出联合查询到Excel,VBA问题