Обновить несколько названий серии графиков - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь обновить имя серии в легенде диаграммы с помощью VBA.Я пробовал 2 способа, и оба работают.Но проблема возникает, когда я пытаюсь выбрать или изменить данные с помощью режима щелчка в моей презентации.

1.

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

Когда я щелкаю, чтобы изменить данные, легенда автоматически изменяется на Serie1 и Serie2.Этого не происходит, если для 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 голосов
/ 21 марта 2019

Вот пример (просто добавьте диаграмму в 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

После этого, если вы попытаетесь щелкнуть, чтобы выбрать данные, это не сработает (просто ожидание курсора).Не уверен (возможно, я просто делаю что-то не так, вот в чем суть), но для меня это выглядит как ошибка, потому что я попытался запустить его снова и получил сообщение об ошибке «Ошибка метода objectdbook object chartdata» ... Chartdataокно кажется недоступным.

0 голосов
/ 20 марта 2019

Это может быть не полный ваш ответ, но может помочь в понимании запроса.

Леа, ваш блок with кажется правильным для работы в PPT, хотя при использовании Excel возникают ... некоторые проблемы.Исходя из того, что вы пишете, есть существенная разбивка:

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

Я предполагаю, что вы хотите, чтобы диапазон Excel B1 был названием для Series 1, а C1 - Series 2. Я полагаю, что вы хотитедля работы с коллекцией серий:

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

Где fpath - путь к папке для рабочей книги.

Мне было бы интересно, почему вы не получаете сообщение об ошибке # 2 (или вы? если так, пожалуйста, укажите код ошибки), если в вашем коде не указано «При возобновлении ошибки далее» или какой-либо другой тип обработки ошибок.


Edit1:

Исправление файла Excel для перезаписи значения на основе имени серии в диаграмме Имя серии (предполагается, что файл Excel открыт, в противном случае откройте его):

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

Относительно выбора / изменения исходных данных с использованиемПрезентация, не могли бы вы опубликовать соответствующий код для генерации данных серии в свой пост?В зависимости от того, как он генерируется, может возникнуть проблема (например, если вы дважды используете «new series (1)», это может быть проблемой и т. Д.).

...