Что делает макрос: Не редко можно увидеть несколько графиков на одном листе. Многие из нас время от времени копируют диаграммы в 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 объявляет четыре переменные:
- PP является переменной объекта, которая выставляет объект PowerPoint Application;
- PPPres является переменной объекта, которая выставляет объект презентации PowerPoint;
- PPSlide является переменной объект, которая выставляет объект слайдов в PowerPoint;
- I используется в качестве счетчика, чтобы помочь диаграммам на рабочем листе.
- Шаг 2 делает административную проверку, чтобы убедиться, что диаграммы на самом деле есть в указанном листе. Если никакие графики не будут найдены, то макрос выходит из процедуры без каких-либо дальнейших действий.
- Шаг 3 открывает PowerPoint с пустой презентацией. Обратите внимание, что мы устанавливаем Видимый — свойство приложения PowerPoint в True. Это гарантирует, что мы можем увидеть действия работы кода.
- Шаг 4 устанавливает, сколько раз макрос будет проходить процедуру, захватив количество графиков на листе. Другими словами, если рабочая таблица содержит пять диаграмм, код цикла работает пять раз. Макрос запускает цикл с одним и сохраняет цикл через процедуру, пока мы не попали в число диаграмм на листе. Переменная в конечном счете, представляет собой число диаграммы в данный момент.
- Шаг 5 использует метод CopyPicture скопировать диаграмму в виде картинки. Переменная I передает фактическое число диаграммы. Метод Application.Wait говорит макросу, чтобы он сделал паузу в течение секунды, что позволит все скопировать в буфере обмена.
- Шаг 6 добавляет новый слайд в презентации с помощью метода Add объекта Slide. Обратите внимание, что мы используем SlideCount + 1, чтобы указать порядковый номер добавленного слайда. Так как мы пробегаем неизвестное количество графиков, мы не можем жестко закодировать номер индекса для каждого слайда. Использование SlideCount + 1 позволяет динамически назначать следующий доступный номер в качестве индекса слайдов. Обратите внимание, что на шаге 6, мы используем ppLayout Blank, гарантируя, что вновь созданные слайды начинаются с чистого макета. Макрос принимает дополнительный шаг здесь и на самом деле устанавливает фокус на слайде. Другими словами, код явно говорит PowerPoint выбрать этот слайд и делает его активным.
- Шаг 7 вставляет изображение в активный слайд — центр изображения, как по горизонтали, так и по вертикали, а затем переходит к следующей диаграмме.
- Шаг 8 очищает память.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код.