Независимые листы данных для каждой презентации PowerPoint.

Вопрос или проблема

Мои формулировки могут быть не совсем точными (я не эксперт в Excel, OLE, VB-вещах), но, пожалуйста, потерпите меня пару секунд.

Нам нужно предоставить статистику по окончанию спринта в презентации PowerPoint (мы используем веб-версию MS Office, 365, Build: 16.0.18709.40504). Я попытался упростить нашу работу, чтобы диаграммы генерировались из данных (избегая создания скриншотов и вставки их для каждого спринта). В основном, вы

  1. нажимаете на диаграмму,
  2. нажимаете “Редактировать в Excel”,
  3. вставляете свои данные, и диаграмма создается автоматически.

Но есть ловушка: если скопировать исходную презентацию в другую папку (чтобы использовать и адаптировать ее для следующего спринта), диаграммы будут ссылаться на исходные таблицы (некоторые файлы .xlsx также создаются вместе с исходной презентацией). По сути, в последующем спринте, редактируя диаграммы, вы также измените диаграммы для предыдущих спринтов.

Как можно указать PowerPoint создавать новые таблицы (и использовать их) независимо от таблиц предыдущего спринта? (мы хотели бы иметь каждую презентацию спринта в отдельной папке)

.

Ответ или решение

Создание независимых таблиц данных для каждой презентации PowerPoint — это задача, требующая понимания взаимодействия между приложениями Microsoft Office, в частности PowerPoint и Excel, особенно в контексте работы с облачными сервисами Microsoft 365. Проблема заключается в том, что при копировании презентации для новой итерации спринта созданные диаграммы ссылаются на исходные таблицы данных, из-за чего изменения влияют на прошлые презентации. Рассмотрим, как можно организовать процесс так, чтобы данные для каждой презентации оставались независимыми.

Теория

Организация работы с данными и диаграммами

В Office 365, когда вы вставляете диаграмму в PowerPoint и редактируете её в Excel, PowerPoint создаёт связанную таблицу данных. Однако при копировании и вставке таких презентаций в новые папки ссылки на происхождения данных остаются неизменными, что и вызывает возникновение данной проблемы.

Независимые данные

Основной принцип для решения вашей задачи заключается в создании независимых таблиц данных для каждой новой презентации, чтобы изменения данных в одной презентации не затрагивали другие. Это требует работы с механизмами интеграции PowerPoint и Excel, в частности с OLE (Object Linking and Embedding), или использования VBA для автоматизации создания новых таблиц данных.

Пример

Предлагаемые шаги для решения проблемы

  1. Создание шаблона с пустыми данными:

    • Создайте PowerPoint презентацию, содержащее все необходимые диаграммы, но с пустыми данными в Excel. Экспортируйте и храните эту презентацию как эталонную версию или шаблон.
  2. Использование макросов VBA:

    • Напишите макрос VBA, который будет автоматически создавать копию презентации и новой таблицы Excel, копировать все данные из шаблона в новую таблицу и перенастраивать ссылки диаграмм соответственно.
  3. Настройка связей с данными:

    • В PowerPoint с использованием встроенных функций Office можно управлять источниками данных, но это требует ручного вмешательства, что не всегда будет удобно для регулярных задач.
  4. Использование скриптов Azure или Power Automate:

    • Если ваша организация использует инфраструктуру Microsoft Azure, можно рассмотреть возможность написания скрипта, который автоматизирует копирование и обновление презентаций.

Применение

Внедрение решения в рабочий процесс

  1. Создание шаблона:

    • Создайте презентацию PowerPoint с необходимыми диаграммами, используя фрагментарные данные. Выгрузите ее как шаблон и храните его отдельно.
  2. Автоматизация через VBA:

    • Разработайте макрос VBA, который при запуске создаёт новое экземпляр презентации и Excel, копирует структуру диаграмм и создаёт новые таблицы данных. Убедитесь, что макрос корректно перенастраивает все ссылки на новые файлы.
    Sub CreateNewSprintPresentation()
       ' Открытие шаблона презентации
       Dim pptApp As Object
       Set pptApp = CreateObject("PowerPoint.Application")
       Dim pptPresentation As Object
       Set pptPresentation = pptApp.Presentations.Open("Template.pptx")
    
       ' Создание нового файла таблицы Excel
       Dim xlApp As Object
       Set xlApp = CreateObject("Excel.Application")
       Dim xlWorkbook As Object
       Set xlWorkbook = xlApp.Workbooks.Add
       xlWorkbook.SaveAs "NewData.xlsx"
    
       ' Обновление ссылок в презентации
       Dim slide As Object
       For Each slide In pptPresentation.Slides
           Dim shape As Object
           For Each shape In slide.Shapes
               If shape.HasChart Then
                   shape.Chart.ChartData.Workbook.Close
                   shape.Chart.ChartData.Activate
                   shape.Chart.ChartData.Workbook.SaveAs "NewData.xlsx"
               End If
           Next shape
       Next slide
    
       ' Сохранение новой презентации
       pptPresentation.SaveAs "NewSprintPresentation.pptx"
       pptPresentation.Close
       xlWorkbook.Close False
    
       pptApp.Quit
       xlApp.Quit
    
       Set xlWorkbook = Nothing
       Set xlApp = Nothing
       Set pptPresentation = Nothing
       Set pptApp = Nothing
    End Sub
  3. Тестирование:

    • Проверьте работу макроса в среде тестирования, чтобы убедиться, что все связи обновляются корректно и данные остаются независимыми между спринтами.
  4. Внедрение в рабочий процесс:

    • Внедрите процесс как стандартную операционную процедуру для подготовки спринтовых отчётов.

Такое решение позволяет сохранить данные независимыми для каждой версии презентации, снизить риск случайного изменения исторических данных и автоматизировать процесс подготовки документов, что значительно снижает трудозатраты и вероятность ошибок.

Этот подход требует начального времени на настройку, однако он экономит значительное количество ресурсов в долгосрочной перспективе, минимизируя ручные вмешательства и повышая точность презентационных данных.

Оцените материал
Добавить комментарий

Капча загружается...