好的,互联网上绝对没有好的文章,我可以找到解释或有关于如何使用VBA创建数据透视表的代码示例。我需要这个,因为我需要数据透视表来显示不同的结果,具体取决于表单中的用户选择。 Excel中有一些但Access的语法不同。我知道这是一个蹩脚的问题,但如果有人有一个如何在VBA中创建数据透视表的例子,我真的很感激帮助。
答案 0 :(得分:3)
经过大约3天的搜索,我觉得我找到了它。并不是说有人真正关心,这只有6个观点,对于VBA的彻底恐怖说了很多。无论如何,MSDN隐藏在“Office XP”下而不是Access下,但无论如何。
答案 1 :(得分:0)
我在Access 2007中创建了一个数据透视图表单。在另一个表单中,我有用户选择控件和pivotform作为子表单。然后我在主窗体中使用这样的代码。对象模型与OWC11(Office Web Components 11)相同。
Private Function DisplayChart()
With mysubform.Form.ChartSpace
.Clear
.AllowFiltering = True
.HasChartSpaceTitle = True
.ChartSpaceTitle.Caption = "test"
.DisplayFieldButtons = False
.DisplayToolbar = False
.ConnectionString = ...
.CommandText = "SELECT rSeries, rCategory, rDate, rValue " & _
"FROM myTable"
.Charts(0).Type = chChartTypePie
.SetData chDimSeriesNames, chDataBound, "rSeries"
.SetData chDimCategories, chDataBound, "rCategory"
.SetData chDimValues, chDataBound, "rValue"
.HasChartSpaceLegend = True
End With
End Function
常数可以从OWC11
导出C:\ Program Files \ Common Files \ Microsoft Shared \ Web Components \ 11 \ OWC11.DLL
您需要在模块顶部使用它们。在这个阶段,我不确定如何从Access数据透视图中提取它们。引用OWC11并将子表单ChartSpace设置为声明为OWC11.ChartSpace的变量。将代码更改写入'Object'后,删除后期绑定的引用(并重新测试)。这样,部署时,你的refs不会在64位机器上脱落。
Private Enum ChartConstants
chDimSeriesNames = 0
chDimCategories = 1
chDimValues = 2
chDataBound = 0
chAxisPositionValue = -8
chAxisPositionCategory = -7
chChartTypePie = 18
End Enum
请记住,您还可以让用户访问数据透视图属性表单,字段列表和删除区域。或者他们可以右键单击图表以获取它们。
(注意 - 这对我来说仍然是一个新发现,所以如果我发现任何问题,我会尽力更新这个答案。)