Как да създавате и вмъквате фигури в PowerPoint с VBA?

Преди няколко дни исках да автоматизирам доста обикновената задача за създаване на слайдове на PowerPoint. Когато автоматизирате PowerPoint, обикновено работите с колекцията Слайдове и фигури. Слайдовете са по-скоро разбираеми, а формите са почти всичко останало, включително текстови полета, бутони за действие, медийни обекти, етикети, снимки, допълнителни описания, блок-схеми и така нататък и така нататък. Въпреки че ще представя техниките с PowerPoint, част от синтаксиса всъщност е доста приложим за Microsoft Word и Excel.

Само за да обобщим, преди да започнете с разработката на VBA макроси в PowerPoint, трябва да активирате вашия раздел за разработка .

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

Сега можем да започнем да работим с Shapes. Първо, нека да продължим и да отворим VBA редактора, като натиснете Alt+ F11. Ако сте следвали предишния урок, трябва да имате модул 1 в списъка си с модули (както е показано по-долу)

Работа с форми с VBA

Добавяне на текстово поле с VBA

Ще започнем с добавяне на вертикално текстово поле към първия ни слайд в презентацията. Добавете следния код към Module1, след това продължете напред и натиснете бутона Save (Ctrl+s) и стартирайте вашия макрос (натиснете F5 или натиснете Run Sub/User Form).

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  , за да зададете цвета на предния план за запълване за указаната форма, както е показано в следващия пример.

VB

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

VB

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

По-долу са общи насоки за това как се държат свойствата и методите, когато се прилагат към  колекция ShapeRange  .

  • Прилагането на метод към колекцията е еквивалентно на прилагането на метода към всеки отделен  Shape  обект в тази колекция.

  • Задаването на стойността на свойство на колекцията е еквивалентно на задаване на стойността на свойството на всяка отделна форма в този диапазон.

  • Свойство на колекцията, което връща константа, връща стойността на свойството за отделна форма в колекцията, ако всички форми в колекцията имат една и съща стойност за това свойство. Ако не всички форми в колекцията имат една и съща стойност за свойството, тя връща „смесената“ константа.

  • Свойство на колекцията, което връща прост тип данни (като  Long ,  Single или  String ), връща стойността на свойството за отделна форма, ако всички форми в колекцията имат една и съща стойност за това свойство.

  • Стойността на някои свойства може да бъде върната или зададена само ако има точно една форма в колекцията. Ако има повече от една форма в колекцията, възниква грешка по време на изпълнение. Това обикновено е случаят при връщане или задаване на свойства, когато еквивалентното действие в потребителския интерфейс е възможно само с една форма (действия като редактиране на текст във форма или редактиране на точките на свободна форма).

Предходните указания също се прилагат, когато задавате свойства на фигури, които са групирани под вторични обекти на  колекцията ShapeRange  , като  обекта FillFormat  . Ако вторичният обект представлява операции, които могат да бъдат извършени върху множество избрани обекти в потребителския интерфейс, ще можете да върнете обекта от колекция  ShapeRange  и да зададете неговите свойства. Например, можете да използвате  свойството Fill  , за да върнете  обекта FillFormat  , който представлява запълванията на всички фигури в  колекцията ShapeRange  . Задаването на свойствата на този  обект FillFormat  ще зададе същите свойства за всички отделни фигури в  колекцията ShapeRange  .

Преминаване през колекция Shapes или ShapeRange

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

VB

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  , която съдържа всички текущо избрани фигури в активния прозорец и задава текста във всяка фигура в колекцията, която може да съдържа текст.

VB

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

Подравняване, разпределяне и групиране на форми в диапазон от форми

Използвайте  методите Подравняване  и  Разпределяне  , за да позиционирате набор от фигури една спрямо друга или спрямо документа, който ги съдържа. Използвайте  метода Групиране  или  метода Прегрупиране  , за да формирате единична групирана форма от набор от форми.

Оставете коментар

Шаблон за проста матрица за делегиране на задачи за Word: Практическа версия за мениджъри на малки екипи

Шаблон за проста матрица за делегиране на задачи за Word: Практическа версия за мениджъри на малки екипи

Използвайте този прост шаблон за матрица за делегиране на задачи в Word, за да зададете собственици, ограничения за решения, крайни срокове и контролни точки, без да усложнявате прекалено малкия екип.

Шаблон за прост лист за посещаемост на детски градини: Вход и отход за печат за домашни грижи за деца

Шаблон за прост лист за посещаемост на детски градини: Вход и отход за печат за домашни грижи за деца

Използвайте този лесен за печат лист за посещаемост на детски градини за домашни грижи, с имена на децата, часове на пристигане/заминаване, подписи и съвети за съответствие.

Шаблон за маркетингова стратегия на една страница за печат за местни фирми

Шаблон за маркетингова стратегия на една страница за печат за местни фирми

Използвайте този шаблон за маркетингова стратегия от една страница, който може да се отпечата, за да дефинирате вашата местна аудитория, оферта, канали, бюджет, седмични действия и измерими цели.

Как да спрете Excel да променя автоматично числата в дати

Как да спрете Excel да променя автоматично числата в дати

Спрете Excel да конвертира стойности като 1/2, 11-53 или JAN1 в дати. Научете надеждни решения за въвеждане, поставяне, импортиране на CSV файлове и вече конвертирани клетки.

Шаблон за презентация на PowerPoint за модерна обява за недвижими имоти (безплатен): Какво да включите

Шаблон за презентация на PowerPoint за модерна обява за недвижими имоти (безплатен): Какво да включите

Създайте изискан PowerPoint за обява за недвижими имоти безплатно с практичен план на слайдовете, снимка, брандиране, достъпност, съответствие и съвети за експорт.

Как да поправите грешката „Outlook не може да изпраща имейли, но може да получава“

Как да поправите грешката „Outlook не може да изпраща имейли, но може да получава“

Поправете Outlook, когато получавате имейли, но не можете да изпращате. Проверете Изпращача, офлайн режима, влизането, SMTP настройките, профили и промените в Microsoft 365.

Опростен шаблон на Excel за двуседмично проследяване на заплатите за малки екипи: Практическо ръководство за настройка

Опростен шаблон на Excel за двуседмично проследяване на заплатите за малки екипи: Практическо ръководство за настройка

Създайте прост двуседмичен трекер на заплатите в Excel за малък екип, включващ работно време, възнаграждения, удръжки, маркери за преглед, обобщения и насоки за водене на записи.

Printable Event Planning Checklist & Budget Template for Word: What to Include and When to Use Excel Instead

Printable Event Planning Checklist & Budget Template for Word: What to Include and When to Use Excel Instead

Build or customize a printable event planning checklist and budget template in Microsoft Word, with practical sections, tradeoffs, and tips for Word vs. Excel.

Проста презентация за обучение при въвеждане в длъжност за нови служители: Практически шаблон от 12 слайда

Проста презентация за обучение при въвеждане в длъжност за нови служители: Практически шаблон от 12 слайда

Създайте проста презентация за въвеждане в длъжност с практична структура от 12 слайда, обхващаща очакванията за ролята, инструменти, сигурност, политики, безопасност и действия за първата седмица.

Как да експортирате контакти от Salesforce в чист Excel формат, без да разваляте ID-тата или телефонните номера

Как да експортирате контакти от Salesforce в чист Excel формат, без да разваляте ID-тата или телефонните номера

Експортирайте контакти от Salesforce в Excel чисто: създайте правилния отчет, експортирайте само детайли в CSV, импортирайте с Power Query, запазете ID-тата и водещите нули, премахнете дублираните записи безопасно и проверете резултата.