Програмування у PowerPoint
PowerPoint — це програма для роботи з презентаціями (тобто набори графічних зображень — слайдів, іноді зі звуковим супроводом). Використовувати можливості VBA у PowerPoint на підприємствах доводиться набагато рідше, ніж можливості Word або Excel, проте іноді така потреба виникає. Часто фахівці використовують презентації PowerPoint для супроводу виступів під час демонстрації продуктів чи послуг, звітів про діяльність тощо. Оскільки зі слайдами можна пов'язувати звуковий супровід, PowerPoint активно використовується для навчання, наприклад, для підготовки інтерактивних уроків. Ще одна можливість, що часто використовується, — створення звукових книг з картинками для дітей. За допомогою PowerPoint можна створювати фотоальбоми зі звуковим супроводом, діафільми зі звуком, дитячі ігри та багато іншого. І як тільки даних стає багато (наприклад, цифрових фотографій може бути кілька сотень) відразу постає питання автоматизації.
Найчастіше доводиться програмним способом виконувати наступні дії.
в PowerPoint:
автоматично створювати презентації (наприклад, на основі набору ізо-
бражень у каталозі);
проводити обробку презентацій — змінювати формат зображень, до-
додавати або змінювати аудіосупровід тощо. Найчастіше подібні дії доводиться робити в тих ситуаціях, коли презентації були пов'язані із зовнішніми файлами і ці файли змінилися.
У PowerPoint система об'єктів виглядає так:
об'єкт найвищого рівня - Application з набором властивостей та методів, дуже схожим на аналогічні об'єкти в Word та Excel;
Програмування у PowerPoint
нижчий рівень — колекція Presentations з об'єктами
Можна сказати, що ці об'єкти помісця в ієрархії приблизно аналогічні об'єкту Workbook в Excel;
в об'єкт Presentation вбудована колекція Slides з об'єктами Slide. Як аналог можна навести листи Worksheet у книгах Excel;
в об'єкт Slide вбудована колекція Shapes з об'єктами Shape. Об'єкти Shape є всі елементи слайду (всього їх 22 типу: зображення, напис, діаграма, заголовок, таблиця, автофігура і т. п.).
Навколо цих чотирьох об'єктів - Application, Presentation, Slide і Shape -
та будується вся об'єктна модель PowerPoint.
У цьому розділі ми не будемо наводити довідку щодо властивостей та методів різних об'єктів PowerPoint (їх можна швидко знайти за допомогою макрорекордера), а натомість проілюструємо роботу з PowerPoint на прикладах з практики.
Припустимо, що нам потрібно створити презентацію PowerPoint на основі набору, які будуть лежати в каталозі C:\Slides (наприклад, вони отримані зі сканера або цифрового фотоапарата). Імена слідують по порядку, наприклад, з DSCN2440.JPG по DSCN2480.JPG. Файлів у каталозі може бути довільна кількість, тому потрібно взяти всі файли з цього каталогу. Наше завдання – помістити їх у презентацію по порядку. Завдання посилюється тим, що різного розміру (за висотою та шириною), а слайди бажано зробити однаковими.
Як не дивно, код VBA для PowerPoint зручніше запускати не з PowerPoint, а із зовнішньої програми, що підтримує VBA, наприклад, Word або Excel. Таким чином, на момент запуску ми гарантовано не матимемо активних презентацій і ми нічого не переплутаємо при вставці.
Наше рішення може виглядати так:
1. Створюємо новий документ у Word чи Excel, до нього поміщаємо кнопку чи забезпечуємо інший графічний інтерфейс до смаку. Головне – це незабути додати до проекту посилання на дві об'єктні бібліотеки:
• Microsoft PowerPoint 11.0 Object Library (msppt.olb) — для об'єктів са-
• Microsoft Scripting Runtime (ScrRun.dll) — щоб користуватися об'єктом FileSystemObject та іншими можливостями для роботи з файловою системою. Ця бібліотека, яка є на будь-якому комп'ютері починаючи з Windows 2000, є найзручнішим способом виконання більшості дій у файловій системі.
Далі можна розпочинати створення коду.
2. Звичайно, перше, що нам знадобиться - запустити PowerPoint. Робиться це так само, як і для Word, Excel, Access тощо:
Dim oApp As New PowerPoint.Application oApp.Activate
3. Наступна дія - створення нової порожньої презентації:
Dim oPresent As PowerPoint.
Set oPresent = oApp.Presentations.Add()
Все абсолютно стандартно, начебто ми створюємо новий документ Word.
А ось далі починаються моменти, специфічні для PowerPoint.
4. Наступною дією має бути створення слайду. Але нам доведеться створювати стільки слайдів, скільки файлів у каталозі C:\Slides. Звісно, слайди створюватимуться у циклі. Спочатку ми отримуємо за допомогою бібліотеки Scripting Runtime (можна було обійтися і засобами Office, але так простіше) колекцію всіх файлів цього каталогу:
Dim oFSO As New Scripting.FileSystemObject
Dim oFolder As Scripting.Folder
Dim oFile As Scripting.File
Set oFolder = oFSO.GetFolder("C:\Slides")
For Each oFile In oFolder.Files
Якщо ми замість крапки вставимо рядок, наприклад, такого виду:
то можна буде переконатись, що ми отримали набір файлів у правильному порядку.
5. Далі потрібно створити слайди. Робитьсяце за допомогою методу Add() колекції Slides. У документації до українського PowerPoint 2003 опис цього методу з незрозумілої причини відсутній (незважаючи на те, що довідка з VBA все одно наводиться англійською), але з підказки можна здогадатися, що цей метод приймає два обов'язкові параметри: номер слайду в презентації (нумерація повинна починатися з 1), і одне із значень перерахування ppSlideLayout (з кількох десятків), яке визначає шаблон слайду.
Номер слайду доведеться забезпечувати лічильником, а найкращий для нас шаблон порожній:
Програмування у PowerPoint
Dim nCounter As Integer nCounter = 1
For Each oFile In oFolder.Files
nCounter = nCounter + 1 Next
6. А тепер найголовніше – вставляємо в слайд зображення та налаштовуємо його розміри. Для цього можна використовувати метод AddPicture() колекції Shapes кожного слайду:
oSl & oFile.Name, _
LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
Природно, код цього пункту поміщається замість крапки в цикл пункту 5. Щоб не возитися з видаленням оброблених файлів, я помістив би в цикл ще один очевидний рядок:
Підсумковий код для нашого завдання може мати такий вигляд:
Dim oApp As New PowerPoint.Application oApp.Activate
Dim oPresent As PowerPoint.
Set oPresent = oApp.Presentations.Add()
Dim oFSO As New Scripting.FileSystemObject
Dim oFolder As Scripting.Folder
Dim oFile As Scripting.File
Set oFolder = oFSO.GetFolder("C:\Slides") For Each oFile In oFolder.Files
oSl & oFile.Name, _ LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _ Left:=10, Top:=10, W >
Декілька рядків коду можуть замінити годинник нудної роботи з копіюваннята вставці зображень вручну.
На практиці код для створення ефектів анімації, звукового супроводу, діапазонів фігур тощо може бути дуже складним. Знайти в документації те, що потрібно, непросто. Рекомендується для отримання "навідних вказівок" активно використовувати макрорекордер та аналізувати створений ним код. Однак макрорекордер часто вибираєточки нетривіальні способи виконання різних дій. Наприклад, для вставки того ж малюнка він пропонує використовувати код типу:
що, звісно, завдання не спрощує. Так що код макрорекордера завжди рекомендується перевіряти та виправляти.
Завдання для самостійної роботи 14: Програмне додавання елементів до слайдів
сов, 2005" (рис. 14.1).
У реальній роботі, можливо, зручніше було помістити цей макрос за зовнішнім додатком VBA, наприклад, документ Word або лист Excel, щоб не копіювати цей код для кожної нової презентації. Але в цій роботі для простоти код буде виконуватись із самого PowerPoint.