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和MSSqlserver里都有将表直接导出到Excel的工具