You.Activate

パワーポイントVBA

パワポVBAについて

PowerPointのVBAというのはあまり活用されていませんが、使いこなすととても便利です。このページでは、3つのサンプルをGIFアニメーションで紹介します。

面倒な図の選択を便利に!

フローチャートなどで、コネクタだけスタイルを変えたいときに手でポチポチ選ぶのは面倒です。そんなときはマクロを使うと簡単です。

百聞は一見にしかず、まず下のデモをご覧ください。

線か図形だけ選択するデモ動画

コードを掲載しておくので、自由に使ってください。

Sub 選択除外_図形のみ選択()
    Call 選択除外(True)
End Sub

Sub 選択除外_コネクターのみ選択()
    Call 選択除外(False)
End Sub

Private Sub 選択除外(非コネクター As Boolean)
    
    'シェイプが選択されていなければ、処理を中断する。
    If Not ActiveWindow.Selection.Type = ppSelectionShapes Then Exit Sub
    
    '残すシェイプのリストを準備
    Dim 残すリスト() As String
    ReDim 残すリスト(0)
    
    Dim 図 As Shape

    For Each 図 In ActiveWindow.Selection.ShapeRange
        If 図.Connector Xor 非コネクター Then
        
            '残すシェイプの末尾に図の名前を追記
            残すリスト(UBound(残すリスト)) = 図.Name
            
            '次の追記用にリストを1つ拡張
            ReDim Preserve 残すリスト(UBound(残すリスト) + 1)
        End If
    Next
    
    'ループで一個作りすぎるので、最後にマイナス1する
    ReDim Preserve 残すリスト(UBound(残すリスト) - 1)
   
    Dim 現在のスライド As Slide
    Set 現在のスライド = ActiveWindow.Selection.SlideRange(1)
    
    '残すリストの図形を選択しなおす。
    現在のスライド.Shapes.Range(残すリスト).Select
    
End Sub

使い方が分からない方は、VBA入門ダウンロードのページで入門教材を配布していますので、まずExcel VBAから初めてみてください。インターネットには便利なサンプルが沢山掲載されていますので、入門教材を終えればそれらのサンプルも使いこなせるようになるはずです。

番号を簡単に増減する

図にテキストで番号を書いている場合、途中に番号を挿入したいときに、番号を全部手で修正するのは面倒です。こんなときも、マクロを使うと簡単にできます。

番号を増減するデモ動画

このマクロは便利ですが、出来ないことも沢山あります。

シェイプ内の先頭1文字しか認識できず、普通の数字は残念ながら9までしか対応していません。丸囲みの数字は20まで対応しています。

このマクロは文字コードが順番に並んでいるという特性を利用したものです。漢数字は順番に並んでいないので対応していません。

コードは以下をご覧ください。

Sub 番号プラス()
    Call 番号増減(1)
End Sub

Sub 番号マイナス()
    Call 番号増減(-1)
End Sub

Private Sub 番号増減(数値)

    'シェイプが選択されていなければ、処理を中断する。
    If Not ActiveWindow.Selection.Type = ppSelectionShapes Then Exit Sub
    
    Dim 図 As Shape
    For Each 図 In ActiveWindow.Selection.ShapeRange
        If 図.HasTextFrame Then
            If 図.TextFrame.HasText Then
                With 図.TextFrame.TextRange
                    'Asc関数にテキストを入れると1文字目の文字コードを返す。
                    'それに指定された数値を足してChrで文字に戻したあと、
                    '2文字目以降を結合。
                    .Text = Chr(Asc(.Text) + 数値) & Mid(.Text, 2)
                End With
            End If
        End If
    Next
End Sub

角丸のサイズを調整する

角丸四角形の角丸サイズを手で調整するのは面倒ですし、目視なのでぴったり合わせることも難しいです。マクロを使えば簡単にできます。

角丸のサイズを調整するデモ動画

コードは次のとおりです。

Sub 角丸サイズ調整()

    'シェイプが選択されていなければ、処理を中断する。
    If Not ActiveWindow.Selection.Type = ppSelectionShapes Then Exit Sub
    
    Dim 角のサイズ As Double, Temp As Variant
    
    Do Until Temp >= 1 And Temp <= 20
        Temp = InputBox("1~20の数値を入力してください。")
        If Temp = "" Then
            Exit Sub
        ElseIf Not IsNumeric(Temp) Then
            Temp = 0    'ループ継続させるためのゼロ代入
        End If
    Loop

    角のサイズ = CDbl(Temp)

    Dim 図 As Shape
    Dim 短辺 As Double
    For Each 図 In ActiveWindow.Selection.ShapeRange
        If 図.AutoShapeType = msoShapeRoundedRectangle Then
            
            '角丸のサイズは、角丸四角形の短辺に対する割合(0~0.5)で表される。
            'まず、どちらが短辺なのかを判定し、そのサイズを代入する。
            短辺 = IIf(図.Width < 図.Height, 図.Width, 図.Height)
            
            '次に、ユーザーが入力したサイズを短辺で割ることで図形に割合を求め、
            '角丸サイズを表す「図.Adjustments.Item(1)」に代入する。
            図.Adjustments.Item(1) = 角のサイズ / 短辺
        End If
    Next

End Sub