我想:
从VBA Excel在PowerPoint中创建图表 将数据源链接到我的Excel文件中的范围 或者用我的数据替换PowerPoint存储数据源的工作表
我是VBA的初学者(一周学习)
我这样做:
Dim ChartDataRange As Excel.Range
Dim myWorksheet As Worksheet
Set ChartDataRange = Excel.Range("Chart_Data_Range")
Dim ChartRelativePerfBox As PowerPoint.Shape
'Now open PowerPoint
Dim pptApp As New PowerPoint.Application
'Keep it visible because we need to see it and be able to save it
pptApp.Visible = True
'Tell VBA that FinancialSlide is a PowerPoint presentation
Dim FinancialSlide As PowerPoint.Presentation
'Add new presentation
Set FinancialSlide = pptApp.Presentations.Add
'Tell VBA that firstslide is a PowerPoint slide
Dim Slide1 As PowerPoint.Slide
'Create the first slide
Set Slide1 = FinancialSlide.Slides.Add(1,PowerPoint.PpSlideLayout.ppLayoutBlank)
Set ChartRelativePerfBox = Slide1.Shapes.AddChart( _
Type:=xlLine, _
Left:=Application.CentimetersToPoints(12.95), _
Top:=Application.CentimetersToPoints(12.6), _
Width:=Application.CentimetersToPoints(11.45), _
Height:=Application.CentimetersToPoints(5.5))
Set myWorksheet = ChartRelativePerfBox.Chart.ChartData.Workbook.Worksheet(1)
'Replace data source in the worksheet by desired data
Application.DisplayAlerts = False
'Copy desired data
ChartDataRange.Copy
'Paste them in the chart worksheet
myWorksheet.Range("A1").PasteSpecial (xlPasteValuesAndNumberFormats)
'Delete extra columns in worksheet
myWorksheet.Columns("D:E").Select
Selection.Delete
'Resize to used range
myWorksheet.ListObjects("Table1").Resize myWorksheet.UsedRange
Application.DisplayAlerts = True
我试图使用:
Set ChartRelativePerfBox.SetSourceData( _
Source:= ChartDataRange, _
PlotBy:= xlLine)
但它不起作用。有什么猜测吗?
我以前的代码有效,但速度很慢..
答案 0 :(得分:0)
作为在VBA中执行此操作的解决方法,您是否考虑过使用从excel到powerpoint的链接对象?
您可以在工作簿中创建图表,然后复制图表并通过执行以下操作将其粘贴到powerpoint中:
现在,您将拥有一个链接到工作簿中图表的图表。每当您手动刷新图表(右键单击 - >更新链接)或打开powerpoint演示文稿时,都会更新。
可以在office website上找到文档。