更新几个图表系列名称

时间:2019-03-19 17:29:03

标签: vba powerpoint powerpoint-vba

我正在尝试使用VBA更新图表图例中的系列名称。我尝试了两种方法,并且都可以。但是,当我尝试在演示文稿中使用单击模式选择或修改数据时,就会出现问题。

1。

.Chart.SeriesCollection(1).Name = "Name 1"
.Chart.SeriesCollection(2).Name = "Name 2"

当我单击以修改数据时,图例由Serie1Serie2自动更改。如果仅使用VBA设置了一个系列(即,注释了一行),则不会发生这种情况。

2。

.Chart.ChartData.Workbook.Worksheets(1).Range("B1").Value = "Name 1"
.Chart.ChartData.Workbook.Worksheets(1).Range("C1").Value = "Name 2"

这一次,我无法打开Excel数据窗口。什么也没发生(没有错误或消息,只是短暂显示等待光标)。

2 个答案:

答案 0 :(得分:0)

这可能不是您的完整答案,但可以帮助您理解请求。

lea,尽管您使用Excel有一些问题,但是with块似乎可以在PPT中使用。从您所写的内容来看,存在重大故障:

.Chart.ChartData.Workbook.Worksheets(1).Range("B1").Value = "Name 1"

我的假设是,您希望Excel范围B1是系列1的名称,而C1是系列2的名称。我相信您希望使用系列集合:

.SeriesCollection(1).Name = fpath & "\" & "[WorkbookName.xlsx]Sheet1!B1"
.SeriesCollection(2).Name = fpath & "\" & "[WorkbookName.xlsx]Sheet1!C1"

fpath是工作簿的文件夹路径。

我想知道为什么您没有在#2上收到错误(或者,如果是,请说明错误代码),除非您的代码中包含On Error Resume Next或其他类型的错误处理


编辑1:

修复Excel文件以基于图表系列名称的系列名称覆盖值(假设Excel文件已打开,否则打开它):

Workbooks("NAme").Sheets("Name").Range("B1").Value = .SeriesCollection(1).Name
Workbooks("NAme").Sheets("Name").Range("C1").Value = .SeriesCollection(2).Name

关于使用演示文稿选择/修改源数据,您能否将用于生成系列数据的相关代码发布到您的帖子中?视其生成方式而定(例如,如果您两次使用“新系列(1)”,则可能会出现问题,等等)。

答案 1 :(得分:0)

这里是一个示例(只需在演示文稿pptm中添加条形图):

Sub main()

With ActivePresentation.Slides(1).Shapes("CHT").chart
    .ChartData.Workbook.worksheets(1).Range("B4") = 999
    .ChartData.Workbook.worksheets(1).Range("B1").Value = "Name 1"
    .ChartData.Workbook.worksheets(1).Range("C1").Value = "Name 2"
End With

ActivePresentation.Save

End Sub

在那之后,如果您尝试单击以选择数据,则该数据将不起作用(只需等待光标)。 不确定(也许我只是在以错误的方式进行操作,这就是重点),但是对我来说这似乎是个错误,因为我尝试再次运行它并收到错误消息“方法工作簿对象chartdata失败” ... Chartdata窗口似乎不可用。