Как создавать и вставлять фигуры в PowerPoint с помощью VBA?

Как создавать и вставлять фигуры в PowerPoint с помощью VBA?

Пару дней назад я хотел автоматизировать довольно рутинную задачу по созданию слайдов в PowerPoint. При автоматизации PowerPoint вы обычно работаете с коллекцией Slides and Shapes. Слайды говорят сами за себя, а фигуры — это почти все остальное, включая текстовые поля, кнопки действий, мультимедийные объекты, метки, изображения, выноски, блок-схемы и т. д. и т. п. Хотя я буду демонстрировать приемы в PowerPoint, часть синтаксиса на самом деле вполне применима к Microsoft Word и Excel.

Напомним, что прежде чем приступить к разработке макросов VBA в PowerPoint, вам необходимо включить вкладку «Разработка» .

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

Теперь мы можем начать работать с фигурами. Прежде всего, давайте продолжим и откроем редактор VBA, нажав Alt + F11. Если вы следовали предыдущему руководству, у вас должен быть модуль 1 в списке модулей (как показано ниже).

Работа с фигурами в VBA

Добавление текстового поля с помощью VBA

Мы начнем с добавления вертикального текстового поля к нашему первому слайду в презентации. Добавьте следующий код в Module1, затем нажмите кнопку «Сохранить» (Ctrl+s) и запустите свой макрос (нажмите F5 или нажмите «Выполнить форму подписчика/пользователя»).

Sub CreateTextBox()
Set MySlide = ActivePresentation.Slides(2)

    With MySlide.Shapes
        .AddTextbox(Orientation:=msoTextOrientationVertical, _
         Left:=90, Top:=200, Width:=80, _
         Height:=200).TextFrame.TextRange.Text _
        = ("This is my vertical text box")

End With

End Sub

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

Sub ResizeText()
Set MyShape = ActivePresentation.Slides(2).Shapes(1)

'Add your required dimensions as needed below
   With MyShape
         .Width = 200
         .Height = 35

End With
End Sub

Текстовые эффекты с помощью VBA

Давайте теперь предположим, что мы хотим добавить текстовое поле ко всем слайдам в презентации, на этот раз немного более визуально привлекательным. Для этого мы будем использовать VBA для создания пользовательских текстовых эффектов, которые мы сможем встроить в один или несколько слайдов презентации. Сначала мы пройдемся по слайдам презентации, а затем добавим текстовый эффект по мере необходимости.

Sub SetEffects()

Dim i As Integer

For i = 1 To ActivePresentation.Slides.Count
    ActivePresentation.Slides(i) _
    .Shapes.AddTextEffect msoTextEffect12, "Draft for Review", _
    "Segoe UI", 32, msoTrue, msoTrue, 650, 50
Next

End Sub

Вот результат ;-):

Как создавать и вставлять фигуры в PowerPoint с помощью VBA?

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

Выноски PowerPoint с VBA

Нашим следующим примером будет добавление выносок в вашу презентацию. В этом примере мы добавим выноску на второй слайд.

Sub CreateCallout()

ActivePresentation.Slides(2).Shapes.AddCallout(Type:=msoCalloutTwo, Left:=200, Top:=50, _  Width:=300, Height:=100).TextFrame.TextRange.Text = "My Callout"

End Sub

Установка свойств фигуры

Многие свойства форматирования фигур не задаются свойствами, которые применяются непосредственно к  объекту Shape  или  ShapeRange  . Вместо этого связанные атрибуты фигуры группируются под вторичными объектами, такими как  объект FillFormat  , который содержит все свойства, относящиеся к заливке фигуры, или объект  LinkFormat  , который содержит все свойства, уникальные для связанных объектов OLE. Чтобы задать свойства фигуры, необходимо сначала вернуть объект, представляющий набор связанных атрибутов фигуры, а затем установить свойства этого возвращенного объекта. Например, вы используете  свойство Fill  для возврата  объекта FillFormat  , а затем устанавливаете  свойство ForeColor  объекта  FillFormat  , чтобы задать цвет переднего плана заливки для указанной фигуры, как показано в следующем примере.

ВБ

Set myDocument = ActivePresentation.Slides(1)
myDocument.Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)

Применение свойства или метода к нескольким фигурам одновременно

В пользовательском интерфейсе есть некоторые операции, которые можно выполнять с несколькими выбранными фигурами; например, вы можете выбрать несколько фигур и задать для них все отдельные заливки одновременно. Существуют и другие операции, которые можно выполнять только с выбранной одной фигурой; например, вы можете редактировать текст в фигуре, только если выбрана одна фигура.

В Visual Basic существует два способа применения свойств и методов к набору фигур. Эти два способа позволяют вам выполнять любую операцию, которую вы можете выполнить с одной фигурой в диапазоне фигур, независимо от того, можете ли вы выполнить одну и ту же операцию в пользовательском интерфейсе.

  • Если операция работает с несколькими выбранными фигурами в пользовательском интерфейсе, вы можете выполнить ту же операцию в Visual Basic, создав  коллекцию ShapeRange  , содержащую фигуры, с которыми вы хотите работать, и применив соответствующие свойства и методы непосредственно к коллекции  ShapeRange  .

  • Если операция не работает с несколькими выбранными фигурами в пользовательском интерфейсе, вы все равно можете выполнить операцию в Visual Basic, пройдя по коллекции  Shapes  или коллекции  ShapeRange  , содержащей фигуры, с которыми вы хотите работать, и применив соответствующие свойства. и методы для отдельных  объектов Shape  в коллекции.

Многие свойства и методы, применимые к  объекту Shape  и  коллекции ShapeRange  , не работают, если их применить к определенным типам фигур. Например,  свойство TextFrame  не работает, если оно применяется к фигуре, которая не может содержать текст. Если вы не уверены, что к каждой фигуре в  коллекции ShapeRange  можно применить определенное свойство или метод, не применяйте это свойство или метод к  коллекции ShapeRange  . Если вы хотите применить одно из этих свойств или методов к коллекции фигур, вам необходимо просмотреть коллекцию и протестировать каждую отдельную фигуру, чтобы убедиться, что это подходящий тип фигуры, прежде чем применять к ней свойство или метод.

Применение свойства или метода к коллекции ShapeRange

Если вы можете одновременно выполнить операцию над несколькими выбранными фигурами в пользовательском интерфейсе, вы можете сделать программный эквивалент, создав коллекцию  ShapeRange  и затем применив к ней соответствующие свойства или методы. В следующем примере создается диапазон фигур, содержащий автофигуры с именами «Большая звезда» и «Маленькая звезда», к ним применяется градиентная заливка, а затем к ним применяется градиентная заливка.myDocument

ВБ

Set myDocument = ActivePresentation.Slides(1) 
Set myRange = myDocument.Shapes _ 
    .Range(Array("Big Star", "Little Star")) 
myRange.Fill.PresetGradient msoGradientHorizontal, _ 
    1, msoGradientBrass

Ниже приведены общие рекомендации по поведению свойств и методов при их применении к  коллекции ShapeRange  .

  • Применение метода к коллекции эквивалентно применению метода к каждому отдельному  объекту Shape  в этой коллекции.

  • Установка значения свойства коллекции эквивалентна установке значения свойства каждой отдельной фигуры в этом диапазоне.

  • Свойство коллекции, возвращающее константу, возвращает значение свойства для отдельной фигуры в коллекции, если все фигуры в коллекции имеют одинаковое значение для этого свойства. Если не все фигуры в коллекции имеют одинаковое значение свойства, возвращается «смешанная» константа.

  • Свойство коллекции, возвращающее простой тип данных (например,  LongSingle или  String ), возвращает значение свойства для отдельной фигуры, если все фигуры в коллекции имеют одинаковое значение для этого свойства.

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

Предыдущие рекомендации также применимы при настройке свойств фигур, сгруппированных под вторичными объектами коллекции  ShapeRange  , такими как  объект FillFormat  . Если вторичный объект представляет операции, которые можно выполнять с несколькими выбранными объектами в пользовательском интерфейсе, вы сможете вернуть объект из коллекции  ShapeRange  и установить его свойства. Например, вы можете использовать  свойство Fill  , чтобы вернуть  объект FillFormat  , представляющий заливки всех фигур в  коллекции ShapeRange  . Установка свойств этого  объекта FillFormat  установит одинаковые свойства для всех отдельных фигур в  коллекции ShapeRange  .

Циклическое перебор коллекции Shapes или ShapeRange

Даже если вы не можете выполнить операцию над несколькими фигурами в пользовательском интерфейсе одновременно, выбрав их, а затем используя команду, вы можете выполнить эквивалентное действие программно, циклически просматривая коллекцию  Shapes  или  коллекцию ShapeRange  , содержащую нужные вам фигуры. хотите работать, и применяете соответствующие свойства и методы к отдельным  объектам Shape  в коллекции. В следующем примере циклически перебираются все фигуры и добавляется текст к каждой фигуре, являющейся автофигурой. и добавляет текст к каждой фигуре, являющейся автофигурой.myDocument

ВБ

Set myDocument = ActivePresentation.Slides(1) 
For Each sh In myDocument.Shapes 
    If sh.Type = msoAutoShape Then 
        sh.TextFrame.TextRange.InsertAfter " (version 1)" 
    End If 
Next

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

ВБ

For Each sh in ActiveWindow.Selection.ShapeRange
    If sh.HasTextFrame Then
        sh.TextFrame.TextRange = "Initially selected"
    End If
Next

Выравнивание, распределение и группировка фигур в диапазоне фигур

Используйте  методы Align  и  Distribute  , чтобы расположить набор фигур относительно друг друга или относительно документа, который их содержит. Используйте  метод Group  или  метод Regroup  , чтобы сформировать одну сгруппированную фигуру из набора фигур.


Имбирь 2.7.53.0

Имбирь 2.7.53.0

Ginger — бесплатная программа для проверки орфографии и грамматики.

Блоки

Блоки

Blocks — это интеллектуальная игра для учащихся 3-го класса начальной школы, позволяющая тренировать навыки обнаружения и зрения. Учителя включили ее в программу поддержки преподавания информационных технологий.

Прези 6.26

Прези 6.26

Prezi — бесплатное приложение, позволяющее создавать цифровые презентации как онлайн, так и офлайн.

Матвей

Матвей

Mathway — очень полезное приложение, которое поможет вам решить все математические задачи, требующие более сложного инструмента, чем встроенный калькулятор вашего устройства.

Adobe Презентер

Adobe Презентер

Adobe Presenter — это программное обеспечение для электронного обучения, выпущенное Adobe Systems, доступное на платформе Microsoft Windows в виде подключаемого модуля Microsoft PowerPoint.

Тукан 2.3.0

Тукан 2.3.0

Toucan — образовательная технологическая платформа. Это позволяет вам изучать новый язык, просматривая обычные повседневные веб-сайты.

ENetВьет 24.2

ENetВьет 24.2

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

Дуолинго

Дуолинго

Duolingo — Изучайте языки бесплатно, или просто Duolingo, — это образовательная программа, позволяющая изучать и практиковать множество разных языков.

RapidTyping

RapidTyping

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

МатТип 7.4.10.53

МатТип 7.4.10.53

MathType — это интерактивное программное обеспечение для уравнений от разработчика Design Science (Dessci), которое позволяет создавать и комментировать математические обозначения для обработки текста, презентаций, электронного обучения и т. д. Этот редактор также используется для создания документов TeX, LaTeX и MathML.