Jak tworzyć i wstawiać kształty w PowerPoint za pomocą VBA?

Jak tworzyć i wstawiać kształty w PowerPoint za pomocą VBA?

Kilka dni temu chciałem zautomatyzować dość przyziemne zadanie tworzenia slajdów programu PowerPoint. Podczas automatyzacji programu PowerPoint zwykle pracujesz z kolekcją Slajdy i kształty. Slajdy są raczej oczywiste, a kształty to prawie wszystko inne, w tym pola tekstowe, przyciski akcji, obiekty multimedialne, etykiety, obrazy, objaśnienia, schematy blokowe i tak dalej. Chociaż będę prezentować techniki w programie PowerPoint, część składni jest w rzeczywistości całkiem odpowiednia w programach Microsoft Word i Excel.

Krótko mówiąc, zanim zaczniesz opracowywać makra w języku VBA w programie PowerPoint, musisz włączyć kartę rozwoju .

Po pierwsze, zacznijmy od automatycznego utworzenia prezentacji z kilkoma slajdami, jak pokazano w tym samouczku: tworzenie prezentacji w VBA .

Teraz możemy rozpocząć pracę z kształtami. Po pierwsze, przejdźmy dalej i otwórz edytor VBA, naciskając Alt + F11. Jeśli postępowałeś zgodnie z poprzednim samouczkiem, powinieneś mieć moduł 1 na liście modułów (jak pokazano poniżej)

Praca z kształtami w VBA

Dodawanie pola tekstowego za pomocą VBA

Zaczniemy od dodania pionowego pola tekstowego do naszego pierwszego slajdu w prezentacji. Dodaj następujący kod do Module1, a następnie naciśnij przycisk Zapisz (Ctrl + s) i uruchom swoje makro (naciśnij F5 lub naciśnij Uruchom formularz podrzędny/użytkownika).

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

Zauważ, że możesz dość łatwo zmienić rozmiar pola tekstowego za pomocą VBA. W takim przypadku zmienimy rozmiar pierwszego kształtu na drugim slajdzie, możesz dowolnie modyfikować.

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

Efekty tekstowe z VBA

Załóżmy teraz, że chcemy dodać pole tekstowe do wszystkich slajdów w prezentacji, tym razem nieco bardziej atrakcyjne wizualnie. W tym celu użyjemy VBA do tworzenia niestandardowych efektów tekstowych, które możemy osadzić w jednym lub kilku slajdach w prezentacji. Najpierw przejdziemy przez slajdy prezentacji, a następnie w razie potrzeby dodamy efekt tekstowy.

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

Oto wynik ;-):

Jak tworzyć i wstawiać kształty w PowerPoint za pomocą VBA?

Zauważ, że równie dobrze możesz użyć prostego znaku wodnego, aby osiągnąć ten konkretny wynik.

Objaśnienia PowerPoint z VBA

Następnym przykładem będzie dodanie objaśnień do prezentacji. W tym przykładzie dodamy objaśnienie drugiego slajdu.

Sub CreateCallout()

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

End Sub

Ustawianie właściwości kształtu

Wiele właściwości formatujących kształty nie jest ustawianych przez właściwości, które mają zastosowanie bezpośrednio do  obiektu Shape  lub  ShapeRange  . Zamiast tego powiązane atrybuty kształtu są grupowane w obiektach drugorzędnych, takich jak  obiekt FillFormat  , który zawiera wszystkie właściwości związane z wypełnieniem kształtu, lub obiekt  LinkFormat  , który zawiera wszystkie właściwości unikalne dla połączonych obiektów OLE. Aby ustawić właściwości kształtu, należy najpierw zwrócić obiekt reprezentujący zestaw powiązanych atrybutów kształtu, a następnie ustawić właściwości zwróconego obiektu. Na przykład użyj  właściwości Fill  , aby zwrócić  obiekt FillFormat  , a następnie ustaw  właściwość ForeColor  obiektu  FillFormat  , aby ustawić kolor pierwszego planu wypełnienia dla określonego kształtu, jak pokazano w poniższym przykładzie.

VB

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

Stosowanie właściwości lub metody do kilku kształtów jednocześnie

W interfejsie użytkownika można wykonać pewne operacje, mając wybranych kilka kształtów; na przykład możesz wybrać kilka kształtów i jednocześnie ustawić wszystkie ich indywidualne wypełnienia. Istnieją inne operacje, które można wykonać tylko po wybraniu jednego kształtu; na przykład tekst w kształcie można edytować tylko wtedy, gdy zaznaczony jest pojedynczy kształt.

W Visual Basic istnieją dwa sposoby stosowania właściwości i metod do zestawu kształtów. Te dwa sposoby umożliwiają wykonanie dowolnej operacji, którą można wykonać na pojedynczym kształcie na wielu kształtach, niezależnie od tego, czy można wykonać tę samą operację w interfejsie użytkownika.

  • Jeśli operacja działa na wielu wybranych kształtach w interfejsie użytkownika, możesz wykonać tę samą operację w Visual Basic, tworząc  kolekcję ShapeRange  zawierającą kształty, z którymi chcesz pracować, i stosując odpowiednie właściwości i metody bezpośrednio do  kolekcji ShapeRange  .

  • Jeśli operacja nie działa na wielu wybranych kształtach w interfejsie użytkownika, nadal możesz wykonać tę operację w Visual Basic, przechodząc przez kolekcję  Shapes  lub  kolekcję ShapeRange  zawierającą kształty, z którymi chcesz pracować, i stosując odpowiednie właściwości i metody do poszczególnych  obiektów Shape  w kolekcji.

Wiele właściwości i metod mających zastosowanie do  obiektu Shape  i  kolekcji ShapeRange  nie działa, jeśli zostaną zastosowane do określonych rodzajów kształtów. Na przykład  właściwość TextFrame  nie działa, jeśli zostanie zastosowana do kształtu, który nie może zawierać tekstu. Jeśli nie masz pewności, że do każdego kształtu w  kolekcji ShapeRange  można zastosować określoną właściwość lub metodę, nie stosuj tej właściwości lub metody do  kolekcji ShapeRange  . Jeśli chcesz zastosować jedną z tych właściwości lub metod do kolekcji kształtów, musisz przejść przez kolekcję i przetestować każdy kształt, aby upewnić się, że jest to odpowiedni typ kształtu, zanim zastosujesz do niego tę właściwość lub metodę.

Stosowanie właściwości lub metody do kolekcji ShapeRange

Jeśli w interfejsie użytkownika możesz wykonać operację na wielu wybranych kształtach jednocześnie, możesz wykonać programowy odpowiednik, tworząc  kolekcję ShapeRange  , a następnie stosując do niej odpowiednie właściwości lub metody. Poniższy przykład konstruuje zakres kształtów zawierający autokształty o nazwach „Duża gwiazda” i „Mała gwiazda”, a następnie stosuje do nich wypełnienie gradientowe i stosuje do nich wypełnienie gradientowe.myDocument

VB

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

Poniżej znajdują się ogólne wytyczne dotyczące zachowania właściwości i metod zastosowanych do  kolekcji ShapeRange  .

  • Zastosowanie metody do kolekcji jest równoznaczne z zastosowaniem metody do każdego pojedynczego  obiektu Shape  w tej kolekcji.

  • Ustawienie wartości właściwości kolekcji jest równoznaczne z ustawieniem wartości właściwości każdego pojedynczego kształtu w tym zakresie.

  • Właściwość kolekcji zwracająca stałą zwraca wartość właściwości dla pojedynczego kształtu w kolekcji, jeśli wszystkie kształty w kolekcji mają tę samą wartość tej właściwości. Jeśli nie wszystkie kształty w kolekcji mają tę samą wartość właściwości, zwracana jest stała „mieszana”.

  • Właściwość kolekcji zwracająca prosty typ danych (taki jak  LongSingle lub  String ) zwraca wartość właściwości dla pojedynczego kształtu, jeśli wszystkie kształty w kolekcji mają tę samą wartość tej właściwości.

  • Wartość niektórych właściwości można zwrócić lub ustawić tylko wtedy, gdy w kolekcji znajduje się dokładnie jeden kształt. Jeśli w kolekcji znajduje się więcej niż jeden kształt, wystąpi błąd wykonania. Dzieje się tak zazwyczaj w przypadku zwracania lub ustawiania właściwości, gdy równoważna akcja w interfejsie użytkownika jest możliwa tylko w przypadku pojedynczego kształtu (akcje takie jak edycja tekstu w kształcie lub edycja punktów dowolnego kształtu).

Powyższe wytyczne mają zastosowanie również podczas ustawiania właściwości kształtów zgrupowanych w obiektach wtórnych kolekcji  ShapeRange  , takich jak  obiekt FillFormat  . Jeśli obiekt dodatkowy reprezentuje operacje, które można wykonać na wielu wybranych obiektach w interfejsie użytkownika, będzie można zwrócić obiekt z  kolekcji ShapeRange  i ustawić jego właściwości. Na przykład możesz użyć  właściwości Fill ,  aby zwrócić  obiekt FillFormat  , który reprezentuje wypełnienia wszystkich kształtów w  kolekcji ShapeRange  . Ustawienie właściwości tego  obiektu FillFormat  spowoduje ustawienie tych samych właściwości dla wszystkich poszczególnych kształtów w  kolekcji ShapeRange  .

Pętla poprzez kolekcję Shapes lub ShapeRange

Nawet jeśli nie możesz wykonać operacji na kilku kształtach w interfejsie użytkownika jednocześnie, zaznaczając je, a następnie używając polecenia, możesz programowo wykonać równoważną czynność, przeglądając w pętli kolekcję  Shapes  lub  kolekcję ShapeRange  zawierającą kształty, które chcesz chcesz pracować i stosować odpowiednie właściwości i metody do poszczególnych  obiektów Shape  w kolekcji. Poniższy przykład przegląda wszystkie kształty i dodaje tekst do każdego kształtu będącego autokształtem. i dodaje tekst do każdego kształtu będącego autokształtem.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

Poniższy przykład konstruuje  kolekcję ShapeRange  , która zawiera wszystkie aktualnie wybrane kształty w aktywnym oknie i ustawia tekst w każdym kształcie w kolekcji, który może zawierać tekst.

VB

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

Wyrównywanie, rozkładanie i grupowanie kształtów w zakresie kształtów

Użyj  metod Align  i  Distribute  , aby ustawić zestaw kształtów względem siebie lub względem dokumentu, który je zawiera. Użyj  metody Group  lub  Regroup  , aby utworzyć pojedynczy zgrupowany kształt z zestawu kształtów.


Imbir 2.7.53.0

Imbir 2.7.53.0

Ginger to darmowy moduł do sprawdzania pisowni i gramatyki.

Bloki

Bloki

Blocks to intelektualna gra przeznaczona dla uczniów klas trzecich szkół podstawowych, służąca ćwiczeniu umiejętności wykrywania i wzroku. Nauczyciele objęli ją programem wspierania nauczania informatyki.

Prezi 6.26

Prezi 6.26

Prezi to darmowa aplikacja, która umożliwia tworzenie cyfrowych prezentacji, zarówno online, jak i offline.

Mathway

Mathway

Mathway to bardzo przydatna aplikacja, która pomoże Ci rozwiązać wszystkie problemy matematyczne, które wymagają bardziej złożonego narzędzia niż kalkulator wbudowany w Twoje urządzenie.

Prezenter Adobe

Prezenter Adobe

Adobe Presenter to oprogramowanie do e-learningu wydane przez firmę Adobe Systems, dostępne na platformie Microsoft Windows jako wtyczka Microsoft PowerPoint.

Tukan 2.3.0

Tukan 2.3.0

Toucan to edukacyjna platforma technologiczna. Pozwala nauczyć się nowego języka podczas przeglądania popularnych, codziennych stron internetowych.

ENetViet 24.2

ENetViet 24.2

eNetViet to aplikacja, która pomaga rodzicom połączyć się ze szkołą, w której uczą się ich dzieci, aby mogli lepiej zrozumieć aktualną sytuację edukacyjną swojego dziecka.

Duolingo

Duolingo

Duolingo - Ucz się języków za darmo, czyli po prostu Duolingo, to program edukacyjny, który pozwala uczyć się i ćwiczyć wiele różnych języków.

Szybkie pisanie

Szybkie pisanie

RapidTyping to wygodne i łatwe w użyciu narzędzie do nauki obsługi klawiatury, które pomoże Ci poprawić szybkość pisania i zmniejszyć liczbę błędów ortograficznych. Dzięki lekcjom zorganizowanym na wielu różnych poziomach RapidTyping nauczy Cię, jak pisać na klawiaturze lub doskonalić istniejące umiejętności.

Typ matematyczny 7.4.10.53

Typ matematyczny 7.4.10.53

MathType to interaktywne oprogramowanie do równań opracowane przez projektanta Design Science (Dessci), które umożliwia tworzenie i dodawanie adnotacji do notacji matematycznej na potrzeby przetwarzania tekstu, prezentacji, e-learningu itp. Ten edytor jest również używany do tworzenia dokumentów TeX, LaTeX i MathML.