Semenalidery.com

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba powerpoint примеры

14. Программирование в PowerPoint

Работа с PowerPoint из VBA, автоматизация создания презентаций, объекты PowerPoint.Application, PowerPoint.Presentation, PowerPoint.Slide, PowerPoint.Shape

Использовать возможности VBA в PowerPoint на предприятиях приходится намного реже, чем возможности Word или Excel, однако иногда такие потребности возникают. Часто специалисты используют презентации PowerPoint для сопровождения выступлений при демонстрации продуктов или услуг, отчетов о деятельности и т.п. Поскольку со слайдами можно связывать звуковое сопровождение, PowerPoint активно используется для целей обучения — например, подготовки интерактивных уроков. Еще одна часто используемая возможность — создание звуковых книг с картинками для детей. При помощи PowerPoint можно создавать фотоальбомы со звуковым сопровождением, диафильмы со звуком, детские игры и многое другое. И как только данных становится много (а, например, цифровых фотографий редко бывает мало) сразу встает вопрос об автоматизации.

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

  • автоматически создавать презентации (например, на основе набора изображений в каталоге);
  • производить обработку презентаций — менять формат изображения, добавлять или изменять аудиосопровождение и т.п. Чаще всего подобные действия приходится производить в тех ситуациях, когда презентации были связаны с внешними файлами и эти файлы изменяются.

В PowerPoint система объектов выглядит следующим образом:

  • объект самого высокого уровня — Application, с набором свойств и методов, очень похожим на аналогичные объекты в Word и Excel;
  • на уровень ниже — коллекция Presentations с объектами Presentation. Можно сказать, что эти объекты по месту в иерархии примерно аналогичны объекту Workbook в Excel;
  • в объект Presentation встроена коллекция Slides с объектами Slide (в качестве примерного аналога можно привести листы в книгах Excel);
  • в объект Slide встроена коллекция Shapes с объектами Shape. Объекты Shape представляют все элементы слайда (всего их 22 типа) — изображение, надпись, диаграмма, заголовок, таблица, автофигура и т.п.

Вокруг этих четырех объектов — Application, Presentation, Slide и Shape и строится вся объектная модель PowerPoint.

В этой главе мы не будем приводить справку по свойствам и методам различных объектов PowerPoint (нужные свойства и методы можно быстро найти при помощи макрорекордера), а вместо этого проиллюстрируем работу с PowerPoint на примерах из реальной жизни.

Предположим, что нам нужно создать презентацию PowerPoint на основе набора JPG-картинок, которые будут лежать в каталоге C:Slides (например, они получены со сканера или цифрового фотоаппарата). Имена файлов JPG идут по порядку, например, с DSCN2440.JPG по DSCN2480.JPG. Файлов в каталоге может быть переменное количество, поэтому нам нужно взять все файлы, которые есть в этом каталоге. Наша задача — поместить их в презентацию по порядку. Задача усугубляется тем, что JPG-файлы разного размера (по высоте и ширине), а слайды, конечно, желательно сделать одинаковыми.

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

Как может выглядеть наше решение:

Создаем новый документ в Word или Excel, в него помещаем кнопку или обеспечиваем другой графический интерфейс по вкусу. Главное — не забыть добавить в проект ссылки на две объектные библиотеки:

  • Microsoft PowerPoint 11.0 Object Library (C:Program FilesMicrosoft OfficeOffice 11msppt.olb) — для объектов самого PowerPoint;
  • Microsoft Scripting Runtime (C:WindowsSystem32ScrRun.dll) — для того , чтобы можно было пользоваться объектом FileSystemObject и прочими для работы с файловой системой . Эта библиотека, которая есть на любом компьютере начиная с Windows 2000, — самый удобный способ выполнения большинства действий в файловой системе.

Далее можно приступать к созданию кода.

Конечно, первое, что нам потребуется — запустить PowerPoint. Делается это точно так же, как и для Word, Excel, Access и т.п.:

Dim oApp As New PowerPoint.Application

Следующее действие — нужно создать новую пустую презентацию:

Dim oPresent As PowerPoint.Presentation

Set oPresent = oApp.Presentations.Add()

Все абсолютно стандартно, как будто мы создаем новый документ Word. А вот дальше начинаются моменты, специфические для PowerPoint и нашей задачи

Следующим действием должно быть создание слайда. Но нам придется создать столько слайдов, сколько файлов находится в каталоге 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

Если мы вместо многоточия поставим строку, например такого вида:

то можно будет убедиться, что набор файлов в правильном порядке мы получили.

Далее нам все-таки нужно создать слайды. Делается это при помощи метода Add() коллекции Slides. В документации к русскому PowerPoint 2003 описание этого метода по непонятной причине отсутствует (даже несмотря на то, что справка по VBA все равно на английском), но из всплывающей подсказки можно догадаться, что этот метод хочет принимать два параметра (обязательных): номер слайда в презентации, который должен начинаться с 1, и одно из значений перечисления ppSlideLayout (из нескольких десятков), которое определяет шаблон слайда.

Читать еще:  Индексированное поле в access

Номер слайда придется обеспечивать счетчиком, а наилучший для нас шаблон — пустой:

Dim nCounter As Integer

For Each oFile In oFolder.Files

Set oSlide = oApp.ActivePresentation.Slides.Add(nCounter, ppLayoutBlank)

nCounter = nCounter + 1

А теперь — самое главное: вставляем в слайд изображение и настраиваем его размеры. Для этой цели можно использовать метод AddPicture() коллекции Shapes каждого слайда:

oSlide.Shapes.AddPicture FileName:=»C:Slides» & _

oFile.Name, LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _

Left :=10, Top :=10, Width :=700, Height :=520

Параметр FileName — это, конечно, имя передаваемого файла. Именно он и будет меняться в цикле. LinkToFile — этот параметр определяет, будет ли файл изображения помещен внутрь презентации ( msoFalse) или в презентацию будет помещена на него ссылка ( msoTrue). Конечно, если вставляемые файлы не очень большие, то и с точки зрения удобства, и с точки зрения производительности презентации лучше поместить их внутрь презентации (файла PPT). Параметр SaveWithDocument, конечно, определяет, сохранять ли наши изображения вместе с презентацией (в нашем случае сохранять). А Left, Top, Width и Height нужны, чтобы сделать изображения одинакового размера (чтобы подобрать нужные значения, я занимался обычным подбором по методу «недолет-перелет»).

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

Итоговый код для нашей задачи может выглядеть так:

Dim oApp As New PowerPoint.Application

Dim oPresent As PowerPoint.Presentation

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

Set oSlide = oApp.ActivePresentation.Slides.Add(nCounter, ppLayoutBlank)

oSlide.Shapes.AddPicture FileName:=»C:Slides» & _

oFile.Name, LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _

Left:=10, Top:=10, Width:=700, Height:=520

Несколько строк кода могут заменить часы нудной работы по копированию и вставке изображений вручную.

На практике работа с PowerPoint может быть достаточно сложной при работе с эффектами анимации, звуковым сопровождением, диапазонами фигур и т.п. Найти в документации то, что вам будет нужно, не так-то просто. Рекомендуется для получения «наводящих указаний» активнее использовать макрорекордер и анализировать созданный им код. Однако макрорекордер часто выбирает какие-то очень нетривиальные способы выполнения различных действий. Например, для вставки того же рисунка он предлагает использовать код типа

что, конечно, задачу не упрощает. Так что код макрорекордера всегда рекомендуется проверять и исправлять.

Эффективная работа в MS Office

Экономия 5 минут в час за счет более продуктивной работы дает за год экономию в 4 рабочие недели

VBA в PowerPoint

Зачем нужны макросы в PowerPoint?

Начну с того, что задачи для программирования в PowerPoint достаточно специфические, в большинстве случаев они решаются через Excel. Однако, ряд задач решить таким образом не удастся. Например:

  • Добавить на каждый слайд презентации progressbar с показом оставшегося количества слайдов
  • Убрать весь alternative text, заголовки и гиперссылки с каждой формы и рисунка
  • Автоматически рисовать фигуру по заданным параметрам, например, для перехода в определенное место презентации
  • Создать умное оглавление
  • Сделать вышеперечисленное для всех презентаций в папке (пользуясь случаем – передаю привет трудягам, у кого их больше 30 на периодическом обновлении)

Как создавать макросы?

Если вы привыкли создавать и запуска макросы из файла с поддержкой макросов – здесь все без изменений. Привычным нажатием на Alt + F11 (или с вкладки Разработчик на ленте) заходите в VBE, добавляете модуль и вставляете код макроса. Запустить код можно по кнопке Run или по нажатию на F5.

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

В PowerPoint привычные действия такого результата не дадут. Даже если вы сохраните вашу презентацию с поддержкой макросов и написанным кодом как надстройку, подключите ее, то вы не сможете запускать макросы. Честное слово, можете попробовать самостоятельно. Я раз 5 попробовал прежде, чем смотреть в интернете в чем же все-таки дело.

А проблема в том, что по умолчанию в PowerPoint вы не можете даже открыть на чтение код макросов в надстройках . Поэтому идем дальше:

Прописываем в регистре Windows возможность редактирования надстроек

Слава богу не мы одни таким вопросом задавались, поэтому есть готовый рецепт

  • Нажмите на клавиши Win + R
  • В появившемся окне вводим regedit
  • Идем в папку HKEY_CURRENT_USERSoftwareMicrosoftOffice14.0PowerPointOptions
    (12.0 для Office 2007, 14.0 для Office 2010, 15.0 для Office 2013, 16.0 для Office 2016)
  • Щелкаем в правом окне правой кнопкой мыши –> New -> DWORD
  • Имя = DebugAddins, значение = 1

Перезапустите PowerPoint – теперь вы сможете видеть в среде VBE код макросов из надстроек.

**Как добавлять/Убирать макросы из надстройки PowerPoint **

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

Читать еще:  Ms project sharepoint

А вот в PowerPoint это не так. Не знаю точно из-за чего сделано это ограничения, но кнопка сохранить не производит никаких изменений в вашу надстройку.

Поэтому моя рекомендация – всегда хранить у себя копию надстройки в виде презентации с поддержкой макросов. Если нужно внести изменения в надстройку, то:

  • Идем в презентацию с поддержкой макросов
  • Вносим изменения в код макросов. Сохраняем изменения в презентации
  • В параметрах PowerPoint отключаем подключенную надстройку
  • Сохраняем презентацию с поддержкой макросов как надстройку с перезаписью
  • В параметрах PowerPoint подключаем надстройку

Непростые манипуляции по сравнению с Excel, да?

Проблема с панелью быстрого доступа

Для тех, кто также как и я, любит добавлять кнопки на панель быстрого доступа:

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

Для себя я остановился на запуске макросов из VBE по кнопке F5.

Если вы все еще не передумали насчет макросов в PowerPoint, то:

Ресурсы по VBA в PowerPoint

Как вы, наверное, догадались – литературы по VBA в PowerPoint как таковой нет. По крайней мере, я не нашел – если поделитесь ссылкой буду рад.

Со статьями на английском языке немного попроще – для себя нашел весьма полезными ресурсы

VBA PowerPoint онлайн-руководство и как записать макрос

Может ли кто-нибудь порекомендовать мне хороший онлайн-гид по PowerPoint VBA? Кроме того, есть ли у кого-нибудь советы о том, как записать макрос в PowerPoint?

3 Ответа

Для записи макроса powerpoint:

  1. В строке меню выберите пункт Сервис
  2. Наведите курсор мыши на макрос > и появится подменю
  3. Нажмите кнопку запись-появится новая панель инструментов
  4. Делай свое дело
  5. Нажмите кнопку стоп на панели инструментов новый макрос

Нажмите на сервис — > макрос — >Macros. Найдите только что записанный макрос и нажмите кнопку Изменить. Это покажет вам, что было записано. Внесите свои изменения и нажмите треугольную кнопку run (или нажмите F5), чтобы запустить свой код.

Что касается онлайн-гида, я обычно думаю о вопросе и использую Google или задаю вопрос здесь на StackOverflow.com. Я смог ответить на большинство своих вопросов таким образом, я не нашел конкретного основного ресурса для всех вещей Powerpoint VBA.

Кроме того, вы можете найти ответы, которые помогут вам, заглянув в VBA статей для других продуктов MS Office — многие вещи, которые не являются Powerpoint-специфичными (общие VBA), будут такими же, как и для других продуктов.

Microsoft удалить Macro recorder из PowerPoint 2007.

Для просмотра структуры объектов используйте Watch (Shift +F9) в object.

добавить часы в ppt для просмотра структуры представления объекта

Добавление нового модуля класса

в классе объявляем

в модуле comon объявите один экземпляр из classCreate (по умолчанию Class1) с помощью

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

Можете ли вы описать, чего вы надеетесь достичь? Там есть десятки книг VBA для Word, Excel и т. д. но «programming» в PowerPoint не так уж часто встречается.

Вот краткий онлайн «FAQ» для newcommer:

и вообще как это делается:

Похожие вопросы:

Это простой и простой вопрос, но нет способа найти ответ или хороший учебник в интернете. И, очевидно, нет способа найти его в этом офисе помощи. Я использую макрос в VBA для создания Powerpoint.

У меня есть некоторые слайды PowerPoint, содержащие различные фрагменты пользовательской анимации (например, появляется фрагмент текста, пауза, появляется следующий фрагмент текста, пользователь.

Я пытаюсь записать макрос в 2013 году, но после того, как я выключаю powerpoint и запускаю его снова, макрос исчезает. Я пытаюсь сделать какой-то шаблон powerpoint и автоматически добавлять его в.

Я создаю таймер в PowerPoint VBA, и я хотел бы, чтобы он перезапустился, когда пользователь нажимает на пульт дистанционного управления. Для этого я использовал этот суб: Private Sub.

Я ищу автоматизированный способ разгруппировать таблицу в power point для создания фигур. Я нашел следующий учебник: Руководство Кроме того, я хотел записать макрос(я совсем новичок в vba), однако в.

У меня есть презентация PowerPoint 2010 с таблицей на одном слайде. Я хочу создать немодальную форму VBA, которая будет работать как палитра форматы / цвета для форматирования ячеек этой таблицы. В.

Пытаясь узнать, как вызвать макрос из командной строки в файле pptm на Macosx, используя Microsoft Powerpoint для Mac 2011 Version 14.7.3 на Mac OS Sierra, я нашел несколько предложений по.

Я просто хочу, чтобы код или свойство находили диаграмму в powerpoint silde, используя макрос(vba). спасибо

Я пытаюсь разработать дополнение для PowerPoint онлайн, но, похоже, самый простой способ проверить приложение-это загрузить версию PowerPoint и протестировать ее там (если это не так, пожалуйста.

Для небольшой компании я создал надстройку для PowerPoint с несколькими vba macros. Он отлично работает на моей машине и на всех машинах небольшой компании-кроме одного. На этой машине PowerPoint.

Читать еще:  Формы в access

Vba powerpoint примеры

Сообщения: 210
Благодарности: 29

Профиль | Отправить PM | Цитировать

Сообщения: 4402
Благодарности: 986

——-
— Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

Сообщения: 210
Благодарности: 29

Сообщения: 4402
Благодарности: 986

morebeauty, хе.
Давай тогда начнем с того, что «обрисованная задача» имеет достаточно расплывчатое представление.
Как я понял, формировать титульный слайд, как первооснову, руками — это кака и бе-бе-бе.
Ладно, допустим сотрудник взял на себя труд и его сформировал. Тогда циклом выдираем ФИО, и через некий разделитель (допустим запятую) вытаскиваем дату.
Из этого формируем новый слайд. Как автоматически привязать к слайду картинку — не знаю.

Другое дело, если будет некая база (хоть текстовый файл), в котором будет указано, где ФИО, где дата рождения, (от сих на будущее можно посчитать юбилеи), и картинка фона + портрет (+ вариант шаблона оформления).

Ну и из практики — все равно придется проверять «руками». Т.к. у людей бывают очень длинные имена, фамилии и отчества. Т.е. надо будет проследить, чтобы слайд не рассыпался и(или) было применено правильно растяжение по шрифту.

PP и VBA у меня под руками нет, поэтому пока только теория.
Т.е. хотелось бы знать, с какими именно объектами придется работать. Т.к. список сотрудников может быть выражен как текстовым полем, так и таблицей.


Понадобятся:
Работа с файлами (загрузка картинок), работа с объектом типа рисунок. (тыц)
Объект типа текстовое поле. (Координаты, символы форматирования, характеристики текста (растяжение по ширине, выравнивание по левому / правому краю / по центру)), (тыц, тыц)
Работа с фоном.(тыц)
Работа с объектом типа заголовок. (тыц)
Создание нового слайда.(тыц)
Общая справка: Все объекты и работа с каждым

——-
— Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Объектная модель VBA — PowerPoint PPT Presentation

Объектная модель VBA. Этапы разработки приложения. Определение потребностей пользователя – постановка задачи. Проектирование приложения, удовлетворяющего заданным условиям. Разработка интерфейса. Разработка приложения. Тестирование и отладка. Разработка документации и справочной системы.

Объектная модель VBA

Presentation Transcript

Этапы разработки приложения • Определение потребностей пользователя – постановка задачи. • Проектирование приложения, удовлетворяющего заданным условиям. • Разработка интерфейса. • Разработка приложения. • Тестирование и отладка. • Разработка документации и справочной системы. • Установка приложения. • Обновление приложения в случае необходимости.

Проектированиеприложения • Файловая структура. • Структура данных. • Формулы или VBA? • Надстройка или файл рабочей книги. • Обработка ошибок. • Использование специальных возможностей. • Вопросы производительности. • Уровень безопасности.

Разработка интерфейса • Использование элементов ленты. • Использование контекстных меню, которые могут быть изменены с помощью VBA. • Использование комбинаций клавиш. • Использование пользовательских диалоговых форм. • Размещение элементов управления непосредственно на рабочем листе.

Разработка интерфейса • Добивайтесь единообразия. • Выбирайте простые решения. • Разбивайте окна ввода. • Не переусердствуйте с цветом. • Отслеживайте шрифты и графику.

Свойства Свойство – это характеристика объекта. • Name – свойство представляет собой строку, содер-жащую имя рабочей книги, например, Книга1.xlsx. • FullName– свойство представляет собой строку, содержащую полный путь и имя рабочей книги, например, D:ДокументыКнига1.xlsx. • Date1904 – логическое свойство, значение которого равно True, если рабочая книга использует систему дат 1904 года, и значение False в противном случае. • ActiveSheet– свойство, определяющее активный рабочий лист книги. Является ссылкой на объект Worksheet – рабочий лист.

Методы Метод определяет действие, выполняемое над объектом. • Close – закрытие рабочей книги. • Save– сохранение рабочей книги. • SaveAs– сохранение рабочей с другим именем или в другом формате. • Protect– защита рабочей книги. • Unprotect– отмена защиты рабочей книги.

События Событие– изменение в состоянии объекта. • Open – событие, которое происходит при открытии рабочей книги. • NewSheet– событие, которое происхо-дит при добавлении нового листа в рабочую книгу. • SheetChange– событие, которое проис-ходит при изменении ячейки любого листа рабочей книги.

Иерархия коллекций и объектов • Application • Workbooks • Workbook • Charts • Chart • Axes • Hyperlinks • Shapes • Names • Sheets • Styles • Windows

Worksheets • Worksheet • ChartObject • Cells • Comments • Hyperlinks • Names • Shapes • Charts • Dialogs • Names • RecentFiles • Sheets • Windows • Worksheets

Примеры работы с объектами VBA Application.Undo Application.Wait «12:00:00» Application.Wait Now + TimeValue(«0:00:10») Application.Workbooks.Item(1).Close Application.Workbooks.Item(«Книга1.xlsm»).Worksheets. Item(«Лист2»).Activate Application.Workbooks.Item(«Книга1.xlsm»).Worksheets. Item(«Лист2»).Cells(1, 1).Value = 7 Workbooks(1).Close Workbooks(«Книга1.xlsm»).Worksheets(«Лист2»).Activate Workbooks(«Книга1.xlsm»).Worksheets(«Лист2»).Cells(1, 1). Value = 7

Некоторые полезные свойства объекта Application

Примеры ActiveCell.Value = 1 ActiveCell.ClearContents MsgBoxActiveSheet.Name Selection.Value = -5

Задание диапазона Range(«B5»).Select Range(«A1:D10»).Select Range(«A1», «D10»).Select Range(«A1:B2», «D10:G12»).Select Range(«A:D»).Select Range(«1:10»).Select Range(«A:D 1:10»).Select Range(«A1,D10»).Select

Ссылка на основную публикацию
Adblock
detector