使用Access 2007 VBA创建数据透视表

时间:2009-04-14 16:01:43

标签: vba ms-access charts access-vba pivot

好的,互联网上绝对没有好的文章,我可以找到解释或有关于如何使用VBA创建数据透视表的代码示例。我需要这个,因为我需要数据透视表来显示不同的结果,具体取决于表单中的用户选择。 Excel中有一些但Access的语法不同。我知道这是一个蹩脚的问题,但如果有人有一个如何在VBA中创建数据透视表的例子,我真的很感激帮助。

2 个答案:

答案 0 :(得分:3)

经过大约3天的搜索,我觉得我找到了它。并不是说有人真正关心,这只有6个观点,对于VBA的彻底恐怖说了很多。无论如何,MSDN隐藏在“Office XP”下而不是Access下,但无论如何。

http://msdn.microsoft.com/en-us/library/aa662945.aspx#

答案 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

请记住,您还可以让用户访问数据透视图属性表单,字段列表和删除区域。或者他们可以右键单击图表以获取它们。

(注意 - 这对我来说仍然是一个新发现,所以如果我发现任何问题,我会尽力更新这个答案。)