-
2009-08-19
认识PowerPoint中的Chart对象模型 - [技术探索]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://pptaddins.blogbus.com/logs/44590440.html
认识PowerPoint中的Chart对象模型
在office 2007发行版本中,对图表的修改并没有涉及整个的office,如在Word和PowerPoint中就没有提供。但是在office 2007 SP2和office 2010中微软在Word和PowerPoint中提供了统一的图表对象模型。图表由Office共享的绘图层绘制,如果你熟悉在Excel 2007中应用图表对象,你就能很容易地在Word或PowerPoint建立相似的解决方案。
很多时候,公司需要在文档或演示文稿中建立客户指定数据的图表,在一般情况下,这些图表有一个标准格式,大小和位置。这个图表对象可以作为解决方案的一部分自动地生成所需要的图表,从而既节省了时间,又避免了繁重的体力劳动。
下面提供一个例子,在PowerPoint中建立一个图表。
Sub CreateChart()
Dim oChart As Chart
Dim oChartData As ChartData
Dim oWB As Excel.Workbook
Dim oWS As Excel.Worksheet
Set oChart = ActivePresentation.Slides(1).Shapes.AddChart.Chart '建立chart
Set oChartData = ActivePresentation.Slides(1).Shapes(1).Chart.ChartData
Set oWB = oChartData.Workbook
Set oWS = oWB.Worksheets(1)
oWS.ListObjects("Table1").Resize gWorkSheet.Range("A1:B5") '增加数据
oWS.Range("Table1[[#Headers],[Series 1]]").Value = "销售"
oWS.Range("a2").Value = "自行车"
oWS.Range("a3").Value = "配件"
oWS.Range("a4").Value = "修理"
oWS.Range("a5").Value = "服装"
oWS.Range("b2").Value = "1000"
oWS.Range("b3").Value = "2500"
oWS.Range("b4").Value = "4000"
oWS.Range("b5").Value = "3000"
With oChart
.ChartStyle = 4
.ApplyLayout 4
.ClearToMatchStyle
End With
oChart.HasTitle = True '增加标题
With oChart.ChartTitle '格式化标题
.Characters.Font.Size = 18
.Text = "2007 Sales"
End With
With oChart.Axes(xlValue)
.HasTitle = True
.AxisTitle.Text = "$"
End With
oChart.ApplyDataLabels
Set oWS = Nothing
oWB.Application.Quit
Set oWB = Nothing
Set oChartData = Nothing
Set oChart = Nothing
End Sub由上面的代码,我们可以看到一个图表仍然通过一个Shape来加载。
在PowerPoint中,通过编程来操纵图表为我们在演示过程中设计图表的动态外观打开了一片门。
随机文章:
用代码在放映时画图 2009-07-28用PPT仿做Flash的片头 2009-06-16关于如何提取Exe文件中PPT源文件的几种方法 2009-01-09向您推荐Shawn Toh和他的网站 2008-12-19用PPT03建立一个烛光动画 2008-12-05








评论
你的代码在我这儿(SP1)还是出错-无效请求。难道是因为版本原因?
With ActivePresentation.Slides(1).Shapes(1)
With .AnimationSettings
.Animate = True
.EntryEffect = ppEffectFade
.ChartUnitEffect = ppAnimateBySeriesElements
End With
End With
End Sub
上述代码在2003版通过,但是2007版chartuniteffect出错,说指定的shape不是图表。
另外,我建议你不要用这样的代码来设置对象动画。从officeXp开始,微软重写了一个新的动画系统,AnimationSettings对象存在的唯一理由是为了兼容,在officeXp之后的版本中使用这个对象,可能的后果是清除所有页面的动画并引发不可预知的错误。
更可靠,更有效的编写方式是:
Sub test()
Dim shp As Shape
Dim sld As Slide
Set shp = ActiveWindow.Selection.ShapeRange(1)
Set sld = ActiveWindow.View.Slide
sld.TimeLine.MainSequence.AddEffect shp, msoAnimEffectFade,msoAnimateChartBySeries
End Sub