使用VBA从Microsoft Excel中获取数据到Powerpoint图表
我试图从Excel中使用VBA(将数据粘贴到Powerpointgraphics对象背后的数据表中)中将数据导入到Powerpointgraphics中。
我使用这个代码作为例子( 来源 ):
'Code by Mahipal Padigela 'Open Microsoft Powerpoint,Choose/Insert a Graph type Slide(No.8), then double click to add a graph and click... '...outside the graph to close the Datasheet, then rename the Graph to "Mychart",Save and Close the Presentation 'Open Microsoft Excel, add some test data to Sheet1(This example assumes that you have some test data... '...(numbers between 0-100) in Rows 2,3,4 and Columns B,C,D,E). 'Open VBA editor(Alt+F11),Insert a Module and Paste the following code in to the code window 'Reference 'Microsoft Powerpoint Object Library' (VBA IDE-->tools-->references) 'Reference 'Microsoft Graph Object Library' (VBA IDE-->tools-->references) 'Change "strPresPath" with full path of the Powerpoint Presentation created earlier. 'Change "strNewPresPath" to where you want to save the new Presnetation to be created later 'Close VB Editor and run this Macro from Excel window(Alt+F8) Dim oPPTApp As PowerPoint.Application Dim oPPTShape As PowerPoint.Shape Dim oPPTFile As PowerPoint.Presentation Public oGraph As Graph.Chart Dim SlideNum As Integer Sub PPGraphMacro() Dim strPresPath As String, strExcelFilePath As String, strNewPresPath As String strPresPath = "H:\PowerPoint\Presentation1.ppt" strNewPresPath = "H:\PowerPoint\New1.ppt" Set oPPTApp = CreateObject("PowerPoint.Application") oPPTApp.Visible = msoTrue Set oPPTFile = oPPTApp.Presentations.Open(strPresPath) SlideNum = 1 oPPTFile.Slides(SlideNum).Select Set oPPTShape = oPPTFile.Slides(SlideNum).Shapes("Mychart") Set oGraph = oPPTShape.OLEFormat.Object Sheets("Sheet1").Activate oGraph.Application.DataSheet.Range("A1").Value = Cells(2, 2).Value oGraph.Application.DataSheet.Range("A2").Value = Cells(3, 2).Value oGraph.Application.DataSheet.Range("A3").Value = Cells(4, 2).Value oGraph.Application.DataSheet.Range("B1").Value = Cells(2, 3).Value oGraph.Application.DataSheet.Range("B2").Value = Cells(3, 3).Value oGraph.Application.DataSheet.Range("B3").Value = Cells(4, 3).Value oGraph.Application.DataSheet.Range("C1").Value = Cells(2, 4).Value oGraph.Application.DataSheet.Range("C2").Value = Cells(3, 4).Value oGraph.Application.DataSheet.Range("C3").Value = Cells(4, 4).Value oGraph.Application.DataSheet.Range("D1").Value = Cells(2, 5).Value oGraph.Application.DataSheet.Range("D2").Value = Cells(3, 5).Value oGraph.Application.DataSheet.Range("D3").Value = Cells(4, 5).Value oGraph.Application.Update oGraph.Application.Quit oPPTFile.SaveAs strNewPresPath oPPTFile.Close oPPTApp.Quit Set oGraph = Nothing Set oPPTShape = Nothing Set oPPTFile = Nothing Set oPPTApp = Nothing MsgBox "Presentation Created", vbOKOnly + vbInformation End Sub
当我运行这个PPT打开就好,代码停在:
Set oGraph = oPPTShape.OLEFormat.Object
与错误消息“OLEFormat(未知成员):无效的请求。此属性只适用于OLE对象。
我正在使用Excel和PowerPoint 2010。
我究竟做错了什么? 我对这一切都很陌生,所以我认为这很简单。
谢谢
/麦
在PowerPoint 2010中做事的新方法是创build一个Excel工作表并将其链接到图表的ChartData
。
在http://msdn.microsoft.com/en-us/library/ff973127.aspx上给出了一个如何实现这个function的例子,并且为了方便起见在下面转载。
Sub CreateChart() Dim myChart As Chart Dim gChartData As ChartData Dim gWorkBook As Excel.Workbook Dim gWorkSheet As Excel.Worksheet ' Create the chart and set a reference to the chart data. Set myChart = ActivePresentation.Slides(1).Shapes.AddChart.Chart Set gChartData = myChart.ChartData ' Set the Workbook and Worksheet references. Set gWorkBook = gChartData.Workbook Set gWorkSheet = gWorkBook.Worksheets(1) ' Add the data to the workbook. gWorkSheet.ListObjects("Table1").Resize gWorkSheet.Range("A1:B5") gWorkSheet.Range("Table1[[#Headers],[Series 1]]").Value = "Items" gWorkSheet.Range("A2").Value = "Coffee" gWorkSheet.Range("A3").Value = "Soda" gWorkSheet.Range("A4").Value = "Tea" gWorkSheet.Range("A5").Value = "Water" gWorkSheet.Range("B2").Value = "1000" gWorkSheet.Range("B3").Value = "2500" gWorkSheet.Range("B4").Value = "4000" gWorkSheet.Range("B5").Value = "3000" ' Apply styles to the chart. With myChart .ChartStyle = 4 .ApplyLayout 4 .ClearToMatchStyle End With ' Add the axis title. With myChart.Axes(xlValue) .HasTitle = True .AxisTitle.Text = "Units" End With 'myChart.ApplyDataLabels ' Clean up the references. Set gWorkSheet = Nothing ' gWorkBook.Application.Quit Set gWorkBook = Nothing Set gChartData = Nothing Set myChart = Nothing End Sub
- Delphi的Excel自动化的Excel获取文本和价值
- Excel .NET COM – 自动化错误。 该系统找不到指定的文件
- 如何将结果导出到Toad for Data Analyst的Excel的不同选项卡中?
- excel用户表单combobox与来自RowSource的值:如何更新。文本更新后的.Value?
- 列出文件夹中的所有文本文件并将信息写入excel表单
- 如何使用PowerShell插入Excel公式?
- 使用VBA从Excel生成VCards
- 自动化Excel工作 – 将文件平面化到Excel电子表格中
- 为什么我从Word文档调用macros而不是从Excel中调用macros时出现错误1004?