gpt4 book ai didi

vba - 使用 VBA 将数据从 Microsoft Excel 获取到 Powerpoint 图表中

转载 作者:行者123 更新时间:2023-12-02 10:53:53 25 4
gpt4 key购买 nike

我正在尝试使用 VBA 将数据从 Excel 获取到 Powerpoint 图表(将数据粘贴到 Powerpoint 图表对象后面的数据表中)。

我使用此代码作为示例 ( source ):

'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 中的新操作方式是创建 Excel 工作表并将其链接到图表的 ChartData

http://msdn.microsoft.com/en-us/library/ff973127.aspx 给出了如何执行此操作的示例。为方便起见,转载如下。

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

关于vba - 使用 VBA 将数据从 Microsoft Excel 获取到 Powerpoint 图表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com