我是一个使用PowerPoint VBA的新手!
我想使用SetSourceData来更改图表的数据范围。
我使用的变量如下:
相关的活动图表被设置为变量Myworksheet
所有这些变量在VBA例程中的其他代码行中都能很好地工作。
为了重新设置图表数据的范围,我使用了以下代码行,但它不起作用,使我的VBA例程崩溃:
Mychart.SetSourceData Source:="=Myworksheet.Range(Cells(1,1),Cells(LastRow,Last_num_col))"如有任何建议,将不胜感激。
发布于 2022-01-13 05:23:46
为了响应bot请求添加更多代码,以便其他人能够更好地理解我的问题,下面请查看一个基本的独立例程,其中包含上下文中有关"SetSourceData“的问题行(您可以自己使用它)。
注意:我使用了这个基本例程的测试PowerPoint数据文件只有(i)一个幻灯片,(ii)该幻灯片上唯一的东西是条形图--没有其他形状。
重新声明我的目标:它是能够动态地设置图表的范围。但是,我使用的方法是指定一个单元格范围,使例程崩溃,产生“自动化错误(错误440)”的无助诊断。
FYI,我也尝试过这种格式:
Mychart.SetSourceData Source:="='Sheet1'!$A$1:$M$4"虽然这种格式对于动态更改范围是无用的,但我只是想看看会发生什么。
结果如下:
!
去想一想。
无论如何,正如我所说的,这种格式对于动态更改图表范围是无用的。
请参阅以下完整的基本例程-任何您可以提供的帮助,以解决SetSourceData问题,将不胜感激!
Sub Demo()
Dim MySlide As Slide
Dim Mychart As Chart
Dim my_Filename As String
Dim LastRow As Integer
Dim Last_num_col As Integer
'Get filename from user and open PowerPoint file
MsgBox "Browse to find your presentation. . .", , "DEMO VBA"
'Get filename from user
With Application.FileDialog(msoFileDialogFilePicker)
.Filters.Clear
.Filters.Add "PowerPoint Files", "*.ppt, *.pptx"
.AllowMultiSelect = False
If .Show = True Then my_Filename = .SelectedItems(1)
End With
Presentations.Open my_Filename
Set MySlide = ActivePresentation.Slides(1)
Set Mychart = MySlide.Shapes(1).Chart
Mychart.Select
Mychart.ChartData.Activate
Set Myworksheet = Mychart.ChartData.Workbook.Worksheets(1)
LastRow = 4
Last_num_col = 13
Mychart.SetSourceData _
Source:="=Myworksheet.Range(Cells(1,1),Cells(LastRow,Last_num_col))"
Mychart.ChartData.Workbook.Close
my_Filename = "Updated.pptx"
ActivePresentation.SaveAs Filename:=my_Filename
ActivePresentation.Close
End Subhttps://stackoverflow.com/questions/70561480
复制相似问题