【发布时间】:2018-06-13 19:38:56
【问题描述】:
我在 Access 中有一个模块,它可以制作新的 Excel 电子表格、制作新表格并将数据从数据库复制到表格中。我想从这个表中创建一个图表并格式化它。创建图表的子如下。
Dim xlapp as Excel.Application
Dim wb as Excel.Workbook
Dim ws as Excel.Worksheet
Set xlapp = New Excel.Application
Set wb = 'created new workbook
Set ws = wb.Worksheets(1)
ws.Range("Results_Table[#All]").Select
ws.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Results_Table[#All]")
ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection(1).AxisGroup = 1
ActiveChart.FullSeriesCollection(2).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection(2).AxisGroup = 1
ActiveChart.FullSeriesCollection(3).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection(3).AxisGroup = 1
ActiveChart.FullSeriesCollection(4).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection(4).AxisGroup = 1
ActiveChart.FullSeriesCollection(5).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection(5).AxisGroup = 1
ActiveChart.FullSeriesCollection(6).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection(6).AxisGroup = 1
ActiveChart.FullSeriesCollection(7).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection(7).AxisGroup = 1
ActiveChart.FullSeriesCollection(8).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection(8).AxisGroup = 2
ActiveChart.FullSeriesCollection(9).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection(9).AxisGroup = 2
ActiveChart.FullSeriesCollection(10).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection(10).AxisGroup = 2
ActiveChart.FullSeriesCollection(11).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection(11).AxisGroup = 2
ActiveChart.FullSeriesCollection(12).ChartType = xlColumnStacked
ActiveChart.FullSeriesCollection(12).AxisGroup = 2
ActiveChart.FullSeriesCollection(13).ChartType = xlXYScatterLines
ActiveChart.FullSeriesCollection(13).AxisGroup = 2
ActiveChart.FullSeriesCollection(14).ChartType = xlXYScatter
ActiveChart.FullSeriesCollection(14).AxisGroup = 2
ActiveChart.ChartGroups(2).Overlap = 100
ActiveChart.ChartGroups(2).GapWidth = 475
ActiveChart.ChartGroups(1).GapWidth = 159
在访问中,这段代码可以成功创建一个'Column Clustered'类型的图表。然而,仅此而已。我尝试将某些部分更改为堆叠的列或散点图的下方的所有内容均无济于事。我可以在所有寄存器的底部放一个打印语句,所以我知道代码实际上到达了那个点。
我还可以复制并粘贴这个确切的代码(将 ws 更改为 ActiveSheet),它可以完美地创建我想要的图表并完全按照它应该的方式进行格式化。
我不确定为什么这些命令在 Excel 中有效,但在 Access 模块中无效。
【问题讨论】:
-
请显示 sub 的
Dim行,以便我们查看您的 Excel 对象。 -
另外,我想知道您的错误处理,因为您可能有一个
On Error Resume Next抑制信息错误。请发布更完整的代码示例以供我们帮助。 -
@Parfait 这是整个 sub,我在这里没有任何错误处理,因为我喜欢使用调试器来指向问题行。我使用全局变量(不好的做法,我知道...),但我会在顶部包含 Dim 和 Set 语句。
-
请张贴公共子/功能行。我看不到 Access 如何识别
ActiveChart。您确定这是在 MS Access 独立模块中还是在 Excel 中运行?