MyTetra Share
Делитесь знаниями!
Как отправить график из Excel в PowerPoint
Время создания: 12.10.2019 20:34
Раздел: !Закладки - VBA - PowerPoint
Запись: xintrea/mytetra_db_adgaver_new/master/base/1570884937pbuhhffdnb/text.html на raw.githubusercontent.com

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

Автор Дмитрий Якушев На чтение4 мин. Просмотров63

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

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

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

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

Код макроса


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

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 очищает память.
Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования