Как обновить Excel встроенные графики в PowerPoint? - PullRequest
7 голосов
/ 09 февраля 2012

У меня есть 30 диаграмм, которые были созданы из Excel и вставлены в слайды PowerPoint.Каждый месяц мне приходится обновлять эти 30 встроенных диаграмм, вручную нажимая на диаграммы и редактируя.

Я знаю, что есть возможность использовать специальную вставку, чтобы данные в диаграммах можно было автоматически обновлять, нажимая ссылки обновления.Однако некоторые диаграммы должны редактировать мои графики.Специальная опция Вставить не позволяет пользователям редактировать графики.Следовательно, я не могу использовать эту специальную опцию вставки.

Я думаю, что решение заключается в написании vba в powerpoint.Может ли кто-нибудь из экспертов предложить написать этот код VBA для обновления всех диаграмм в PowerPoint?В настоящее время я использую PowerPoint 2007. Ваша помощь очень ценится.

Ответы [ 2 ]

14 голосов
/ 09 февраля 2012

Если вам нужно отредактировать диаграммы, то вам, очевидно, нужно либо отредактировать базовые файлы Excel, либо иметь возможность редактировать в PowerPoint

Поскольку вы используете PowerPoint2007, который обеспечивает полную поддержку Excel (в отличие от PowerPoint 2003, в котором есть таблица данных), я бы

Часть 1

  1. Свяжите данные файла Excel с данными Excel под каждой диаграммой
  2. Предоставляет возможность либо использовать эти данные напрямую, либо перезаписать их пользовательскими данными

Sample

Это дает вам гибкое решение, за исключением того, что Excel, лежащий в основе каждой диаграммы, не может обновляться автоматически с помощью команды Обновить ссылки в меню PowerPoint.

Часть 2

Вы можете использовать код ниже, чтобы проверить, есть ли у каждой фигуры на каждом слайде диаграмма. В этом случае этот код обновит первую ссылку Excel в файле Excel под диаграммой (эту часть можно настроить для обработки нескольких ссылок)

    Sub ChangeChartData()

    Dim pptChart As Chart
    Dim pptChartData As ChartData
    Dim pptWorkbook As Object
    Dim sld As Slide
    Dim shp As Shape

    For Each sld In ActivePresentation.Slides
        For Each shp In sld.Shapes
            If shp.HasChart Then
                Set pptChart = shp.Chart
                Set pptChartData = pptChart.ChartData
                pptChartData.Activate
                Set pptWorkbook = pptChartData.Workbook
                On Error Resume Next
                'update first link
                pptWorkbook.UpdateLink pptWorkbook.LinkSources(1)
                On Error GoTo 0
                pptWorkbook.Close True
            End If
        Next
    Next

    Set pptWorkbook = Nothing
    Set pptChartData = Nothing
    Set pptChart = Nothing

End Sub
2 голосов
/ 21 ноября 2012

Это довольно легко сделать без кода VBA.

  1. Нажмите кнопку «Office», выберите «Редактировать ссылки на файл» (под «Проверка совместимости», вам придется прокрутить вниз, чтобы увидеть последний вариант):

    Office Menu,

  2. Выберите все встроенные диаграммы (называемые здесь «ссылками»), нажмите «Обновить сейчас»:

Вы можете использовать это же окно для разрыва ссылок, а также для изменения исходного файла для любой данной ссылки.

...