首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用SetSourceData

使用SetSourceData
EN

Stack Overflow用户
提问于 2022-01-03 03:39:17
回答 1查看 117关注 0票数 0

我是一个使用PowerPoint VBA的新手!

我想使用SetSourceData来更改图表的数据范围。

我使用的变量如下:

相关的活动图表被设置为变量Myworksheet

  • two

  • ,与图表相关联的工作表被设置为变量范围变量,称为LastRow和Last_num_col被设置为

所有这些变量在VBA例程中的其他代码行中都能很好地工作。

为了重新设置图表数据的范围,我使用了以下代码行,但它不起作用,使我的VBA例程崩溃:

代码语言:javascript
运行
复制
Mychart.SetSourceData Source:="=Myworksheet.Range(Cells(1,1),Cells(LastRow,Last_num_col))"

如有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-01-13 05:23:46

为了响应bot请求添加更多代码,以便其他人能够更好地理解我的问题,下面请查看一个基本的独立例程,其中包含上下文中有关"SetSourceData“的问题行(您可以自己使用它)。

注意:我使用了这个基本例程的测试PowerPoint数据文件只有(i)一个幻灯片,(ii)该幻灯片上唯一的东西是条形图--没有其他形状。

重新声明我的目标:它是能够动态地设置图表的范围。但是,我使用的方法是指定一个单元格范围,使例程崩溃,产生“自动化错误(错误440)”的无助诊断。

FYI,我也尝试过这种格式:

代码语言:javascript
运行
复制
Mychart.SetSourceData Source:="='Sheet1'!$A$1:$M$4"

虽然这种格式对于动态更改范围是无用的,但我只是想看看会发生什么。

结果如下:

  1. 在12年前创建的一个非常老的PowerPoint文件上测试它时,它确实成功地改变了图表范围。但是,它还(i)切换了行/列,(ii)改变了图表中所有条形图的颜色。
  2. 在我今天创建的PowerPoint文件上测试它时,使用的是完全相同的条形图和完全相同的数据,它没有改变图表范围,但至少没有完全重新排列图表!!

去想一想。

无论如何,正如我所说的,这种格式对于动态更改图表范围是无用的。

请参阅以下完整的基本例程-任何您可以提供的帮助,以解决SetSourceData问题,将不胜感激!

代码语言:javascript
运行
复制
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 Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70561480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档