Как создавать и вставлять фигуры в 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  , чтобы сформировать одну сгруппированную фигуру из набора фигур.


6 простых и быстрых решений для исправления ошибки PS4 CE-32895-7

6 простых и быстрых решений для исправления ошибки PS4 CE-32895-7

Получение ошибки CE-32895-7 при попытке войти в систему или подключиться к PS4, затем следуйте приведенным решениям и легко устраните ошибку PS4 CE-32895-7.

7 быстрых исправлений ошибки ReCaptcha для владельца сайта: неверный тип ключа

7 быстрых исправлений ошибки ReCaptcha для владельца сайта: неверный тип ключа

Увидев Google ReCaptcha «Ошибка для владельца сайта: неверный тип ключа», попробуйте исправить, например, перейти на ключ ReCaptcha V2, обновить браузер и т. д.

Распространенные проблемы Pixel 6 и Pixel 6 Pro и способы их решения

Распространенные проблемы Pixel 6 и Pixel 6 Pro и способы их решения

Мы составили список наиболее распространенных проблем с Pixel 6 и Pixel 6 Pro, а также некоторые применимые решения. Узнайте больше здесь и дайте нам свои 2 цента.

Как решить проблему «Sims 4 Сим не спит»? [ПРОВЕРЕННЫЕ СПОСОБЫ]

Как решить проблему «Sims 4 Сим не спит»? [ПРОВЕРЕННЫЕ СПОСОБЫ]

Обеспокоены уровнем энергии симов, поскольку симы не остаются в постели и не засыпают? Прочитайте о решениях проблемы Sims 4: сим не спит.

Двухэтапная аутентификация Google не работает? Проверьте эти решения

Двухэтапная аутентификация Google не работает? Проверьте эти решения

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

Полное руководство по запуску Scandisk в Windows 10 и 8

Полное руководство по запуску Scandisk в Windows 10 и 8

Узнайте, как запустить ScanDisk в системе Windows 10 и 8. Прочтите полное руководство и следуйте шагам, приведенным один за другим, чтобы сделать ваш жесткий диск безошибочным.

Исправить Dungeon Siege 2 без указателя мыши [ПРОВЕРЕННЫЕ СПОСОБЫ]

Исправить Dungeon Siege 2 без указателя мыши [ПРОВЕРЕННЫЕ СПОСОБЫ]

При работе с Dungeon Siege 2 нет проблем с указателем мыши, затем попробуйте изменить разрешение, обновить драйверы, изменить параметры запуска и другие…

Windows OEM и Windows Retail: различия, которые нужно знать

Windows OEM и Windows Retail: различия, которые нужно знать

Пытаясь купить лицензионный ключ Windows, узнайте разницу между Windows OEM и Windows Retail и выберите лучший ключ продукта для своего ПК.

Ваш компьютер или сеть могут отправлять автоматические запросы [ИСПРАВЛЕНО]

Ваш компьютер или сеть могут отправлять автоматические запросы [ИСПРАВЛЕНО]

Узнайте, как устранить ошибку "Ваш компьютер может отправлять автоматические запросы" и безопасно продолжить работу с Google. Инструкции по исправлению.

8 простых способов исправить ошибку «У вас есть эта игра или приложение?» Ошибка 0x803f8001?

8 простых способов исправить ошибку «У вас есть эта игра или приложение?» Ошибка 0x803f8001?

Чтобы исправить ошибку «У вас есть эта игра или приложение?» код ошибки 0x803f8001 на Xbox, выполните несколько простых действий, чтобы устранить проблему и насладиться игрой.