VBAを使用してPowerPointで図形を作成および挿入する方法は?

VBAを使用してPowerPointで図形を作成および挿入する方法は?

数日前、PowerPointスライドを作成するというかなりありふれたタスクを自動化したかったのです。PowerPointを自動化するときは、通常、スライドと図形のコレクションを使用します。スライドはかなり自明であり、図形は、テキストボックス、アクションボタン、メディアオブジェクト、ラベル、画像、コールアウト、フローチャートなど、他のほとんどすべてのものです。PowerPointの手法を紹介しますが、構文の一部は実際にはMicrosoftWordとExcelにかなり適用できます。

要約すると、PowerPointでVBAマクロの開発を開始する前に、[開発]タブを有効にする必要があります

まず、このチュートリアルに示すように、いくつかのスライドを使用してプレゼンテーションを自動的に作成することから始めましょう。VBAでプレゼンテーションを作成します。

これで、Shapesの操作を開始できます。まず、Alt + F11を押してVBAエディターを開きます。前のチュートリアルに従った場合は、モジュールリストにモジュール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を使用すると、テキストボックスのサイズをかなり簡単に変更できることに注意してください。この場合、2番目のスライドの最初の形状のサイズを変更します。必要に応じて自由に変更してください。

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を使用して、プレゼンテーションの1つ以上のスライドに埋め込むことができるカスタムテキスト効果を作成します。最初にプレゼンテーションスライドをループしてから、必要に応じてテキスト効果を追加します。

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

結果は次のとおりです;-):

VBAを使用してPowerPointで図形を作成および挿入する方法は?

この特定の結果を達成するには、単純な透かしを使用する方がよいことに注意してください。

VBAを使用したPowerPointのコールアウト

次の例は、プレゼンテーションにコールアウトを追加することです。この例では、2番目のスライドにコールアウトを追加します。

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オブジェクトや、リンクされた OLE オブジェクトに固有のすべてのプロパティを含むLinkFormat オブジェクトなどの二次オブジェクトの下にグループ化されます。図形のプロパティを設定するには、まず関連する図形属性のセットを表すオブジェクトを返し、次にその返されたオブジェクトのプロパティを設定する必要があります。たとえば、  次の例に示すように、 Fillプロパティを使用してFillFormatオブジェクト を返し  、  FillFormatオブジェクト の ForeColorプロパティを設定して、指定された図形の塗りつぶし前景色を設定します。

VB

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

プロパティまたはメソッドを複数のシェイプに同時に適用する

ユーザー インターフェイスでは、複数の図形を選択して実行できる操作がいくつかあります。たとえば、複数の図形を選択し、それらの個別の塗りつぶしをすべて一度に設定できます。単一の図形を選択した場合にのみ実行できる操作は他にもあります。たとえば、単一の図形が選択されている場合のみ、図形内のテキストを編集できます。

Visual Basic では、一連の図形にプロパティとメソッドを適用する方法が 2 つあります。これら 2 つの方法を使用すると、ユーザー インターフェイスで同じ操作を実行できるかどうかに関係なく、単一のシェイプに対して実行できる操作を、さまざまなシェイプに対して実行できます。

  • ユーザー インターフェイスで選択した複数の図形に対して操作が行われる場合は、  操作する図形を含む ShapeRangeコレクションを構築し、適切なプロパティとメソッドをShapeRange コレクションに直接適用することで、Visual Basic で同じ操作を実行できます。

  • ユーザー インターフェイスで選択した複数の図形に対して操作が機能しない場合でも、Shapes コレクション 、または  操作する図形を含むShapeRangeコレクションをループし、適切なプロパティを適用することで、Visual Basic で操作を実行できます。およびメソッドを コレクション内の個々の Shapeオブジェクトに追加します。

Shape オブジェクトと ShapeRangeコレクションに適用される多くのプロパティとメソッドは、  特定の種類の図形に適用すると失敗します。たとえば、  テキストを含めることができない図形にTextFrameプロパティを適用すると、失敗します。ShapeRange コレクション内の各図形に特定のプロパティまたはメソッドを適用できることが 確信できない場合は 、そのプロパティまたはメソッドをShapeRange コレクションに適用しないでください。これらのプロパティまたはメソッドのいずれかを図形のコレクションに適用する場合は、プロパティまたはメソッドを適用する前に、コレクションをループして個々の図形をテストして、適切な種類の図形であることを確認する必要があります。

ShapeRange コレクションへのプロパティまたはメソッドの適用

ユーザー インターフェイスで選択した複数の図形に対して同時に操作を実行できる場合は、  ShapeRange コレクションを構築し、それに適切なプロパティまたはメソッドを適用することで、プログラム的に同等の操作を行うことができます。次の例では、「Big Star」と「Little Star」という名前のオートシェイプを含む図形範囲を構築し、それらにグラデーション塗りつぶしを適用し、さらにそれらにグラデーション塗りつぶしを適用します。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など)を返すコレクションのプロパティは、 コレクション内のすべての図形のプロパティの値が同じである場合、個々の図形のプロパティの値を返します。

  • 一部のプロパティの値は、コレクション内に形状が 1 つだけ存在する場合にのみ取得または設定できます。コレクション内に複数の形状がある場合、実行時エラーが発生します。これは一般に、ユーザー インターフェイスでの同等のアクションが 1 つの図形でのみ可能である場合にプロパティを返したり設定したりする場合に当てはまります (図形内のテキストの編集やフリーフォームのポイントの編集などのアクション)。

前述のガイドラインは、 FillFormatオブジェクト など、  ShapeRangeコレクションの二次オブジェクトの下にグループ化されている図形のプロパティを設定する場合にも適用されます  。セカンダリ オブジェクトがユーザー インターフェイスで選択された複数のオブジェクトに対して実行できる操作を表す場合、  ShapeRange コレクションからオブジェクトを返し、そのプロパティを設定できます。たとえば、  Fillプロパティを使用して、 ShapeRangeコレクション 内のすべての図形の塗りつぶしを表す FillFormatオブジェクト を返すことが できます 。このFillFormatオブジェクトのプロパティを設定すると、  ShapeRangeコレクション 内のすべての個々の図形に同じプロパティが設定されます  。

Shapes または ShapeRange コレクションのループ

ユーザー インターフェイスで複数の図形を選択してコマンドを使用して同時に操作を実行できない場合でも、Shapes コレクション、 または 必要  な図形を含むShapeRangeコレクションをループすることで、同等の操作をプログラムで実行できます。 コレクション内の個々のShapeオブジェクトを操作し、適切なプロパティとメソッドを適用したいと考えています 。次の例では、すべての図形をループし、オートシェイプである各図形にテキストを追加します。そして、オートシェイプである各図形にテキストを追加します。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

形状範囲内での形状の整列、配置、およびグループ化

Alignメソッド と Distributeメソッドを使用して、  一連の図形を相互に相対的に、または図形を含むドキュメントに対して相対的に配置します。Group メソッドまたは Regroupメソッドを使用して、  図形のセットから 1 つのグループ化された図形を形成します。


ジンジャー 2.7.53.0

ジンジャー 2.7.53.0

Ginger は無料のスペル チェッカーと文法チェッカーです。

ブロック

ブロック

Blocks は、小学校 3 年生向けの探知能力と視覚能力を訓練するための知的なゲームであり、教師による IT 指導支援プログラムに組み込まれています。

マスウェイ

マスウェイ

Mathway は、デバイスに内蔵されている電卓よりも複雑なツールを必要とする数学の問題をすべて解決できる、非常に便利なアプリです。

アドビプレゼンター

アドビプレゼンター

Adobe Presenter は、Adobe Systems によってリリースされた e ラーニング ソフトウェアで、Microsoft Windows プラットフォーム上で Microsoft PowerPoint プラグインとして利用できます。

オオハシ 2.3.0

オオハシ 2.3.0

Toucan は教育テクノロジー プラットフォームです。日常的に使用される一般的な Web サイトを閲覧しながら、新しい言語を学習できます。

ENetViet 24.2

ENetViet 24.2

eNetViet は、保護者と子供が勉強している学校を結び付け、子供の現在の学習状況を明確に理解できるようにするアプリケーションです。

デュオリンゴ

デュオリンゴ

Duolingo - 無料で言語を学ぶ、または単に Duolingo は、さまざまな言語を学び、練習できる教育プログラムです。

ラピッドタイピング

ラピッドタイピング

RapidTyping は、タイピング速度を向上させ、スペル ミスを減らすのに役立つ、便利で使いやすいキーボード トレーニング ツールです。RapidTyping では、さまざまなレベルに合わせてレッスンが構成されており、タイピングの方法や既存のスキルを向上させる方法を学びます。

MathType 7.4.10.53

MathType 7.4.10.53

MathType は、開発者 Design Science (Dessci) が提供するインタラクティブな方程式ソフトウェアで、ワード プロセッシング、プレゼンテーション、e ラーニングなどの数学的記法を作成して注釈を付けることができます。このエディタは、TeX、LaTeX、および MathML ドキュメントの作成にも使用されます。

文法的に

文法的に

Grammarly の AI を活用したアプリは、人々のコミュニケーションをより効果的にするのに役立ちます。何百万ものユーザーが毎日 Grammarly を利用して、メッセージ、ドキュメント、ソーシャル メディアの投稿をより明確に、エラーなく、よりプロフェッショナルなものにしています。