Как отправить график из Excel в PowerPoint

Что делает макрос: Не редко можно увидеть несколько графиков на одном листе. Многие из нас время от времени копируют диаграммы в PowerPoint презентации. Макрос помогает в решении этой задачи, эффективно автоматизирует процесс копирования каждого из этих графиков в свой собственный слайд.

Как макрос работает

В этом макросе, мы выполняем цикл по коллекции ActiveSheet.ChartObjects, чтобы скопировать каждую диаграмму в виде изображения в свою собственную страницу в недавно созданной презентации PowerPoint.

Код макроса

Sub CopyAllChartsToPresentation()
'Шаг 1: Объявляем переменные
Dim PP As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim i As Integer
'Шаг 2: Проверьте есть ли графики; выйти, если нет графиков
Sheets("Данные слайдов").Select
If ActiveSheet.ChartObjects.Count < 1 Then
MsgBox "Нет графиков на активном листе"
Exit Sub
End If
'Шаг 3: Откройте PowerPoint и создайте новую презентацию
Set PP = New PowerPoint.Application
Set PPPres = PP.Presentations.Add
PP.Visible = True
'Шаг 4: Начать цикл на основе количества графиков
For i = 1 To ActiveSheet.ChartObjects.Count
'Шаг 5: Скопируйте диаграмму как рисунок
ActiveSheet.ChartObjects(i).Chart.CopyPicture _
Size:=xlScreen, Format:=xlPicture
Application.Wait (Now + TimeValue("0:00:1"))
'Шаг 6: Подсчет слайдов и добавление нового слайда в качестве 'следующего доступного номера слайда
ppSlideCount = PPPres.Slides.Count
Set PPSlide = PPPres.Slides.Add(SlideCount + 1, ppLayoutBlank)
PPSlide.Select
'Шаг 7: Вставьте картинку и отрегулируйте ее положение; Перейти к 'следующему графику
PPSlide.Shapes.Paste.Select
PP.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
PP.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True
Next i
'Шаг 8: Очистка памяти
Set PPSlide = Nothing
Set PPPres = Nothing
Set PP = Nothing
End Sub

Как этот код работает

  1. Шаг 1 объявляет четыре переменные:
    • PP является переменной объекта, которая выставляет объект PowerPoint Application;
    • PPPres является переменной объекта, которая выставляет объект презентации PowerPoint;
    • PPSlide является переменной объект, которая выставляет объект слайдов в PowerPoint;
    • I используется в качестве счетчика, чтобы помочь диаграммам на рабочем листе.
  2. Шаг 2 делает административную проверку, чтобы убедиться, что диаграммы на самом деле есть в указанном листе. Если никакие графики не будут найдены, то макрос выходит из процедуры без каких-либо дальнейших действий.
  3. Шаг 3 открывает PowerPoint с пустой презентацией. Обратите внимание, что мы устанавливаем Видимый — свойство приложения PowerPoint в True. Это гарантирует, что мы можем увидеть действия работы кода.
  4. Шаг 4 устанавливает, сколько раз макрос будет проходить процедуру, захватив количество графиков на листе. Другими словами, если рабочая таблица содержит пять диаграмм, код цикла работает пять раз. Макрос запускает цикл с одним и сохраняет цикл через процедуру, пока мы не попали в число диаграмм на листе. Переменная в конечном счете, представляет собой число диаграммы в данный момент.
  5. Шаг 5 использует метод CopyPicture скопировать диаграмму в виде картинки. Переменная I передает фактическое число диаграммы. Метод Application.Wait говорит макросу, чтобы он сделал паузу в течение секунды, что позволит все скопировать в буфере обмена.
  6. Шаг 6 добавляет новый слайд в презентации с помощью метода Add объекта Slide. Обратите внимание, что мы используем SlideCount + 1, чтобы указать порядковый номер добавленного слайда. Так как мы пробегаем неизвестное количество графиков, мы не можем жестко закодировать номер индекса для каждого слайда. Использование SlideCount + 1 позволяет динамически назначать следующий доступный номер в качестве индекса слайдов. Обратите внимание, что на шаге 6, мы используем ppLayout Blank, гарантируя, что вновь созданные слайды начинаются с чистого макета. Макрос принимает дополнительный шаг здесь и на самом деле устанавливает фокус на слайде. Другими словами, код явно говорит PowerPoint выбрать этот слайд и делает его активным.
  7. Шаг 7 вставляет изображение в активный слайд — центр изображения, как по горизонтали, так и по вертикали, а затем переходит к следующей диаграмме.
  8. Шаг 8 очищает память.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.
Оцените статью
Добавить комментарий