パワポの【疑問】を解決!「よくあるご質問」はこちら ▶︎
スポンサーリンク
スポンサーリンク

PowerPointで線幅と効果を図形と一緒に拡大縮小する神業

PowerPointで線幅と効果を図形と連動して拡大縮小する方法をご紹介します。

パワポでは図形をリサイズしても、線幅と効果の値は連動しません。Illustratorでは、拡大縮小ツールの「線幅と効果も拡大縮小する」の設定で切り替えができます。

そこで、パワポでも線幅と効果を一緒にリサイズできるようにする2つの方法を解説します。

スポンサーリンク

通常のリサイズ

上図はPowerPointで描いた肉のイラストです。イラストのアウトラインに線幅を設定し、肉の陰影に効果の「影」を設定しています。

このイラストを拡大すると、線幅と影は拡大されず元の値のままなので、拡大すればするほど線が細くなりイラストの印象が変わってしまいます。

通常なら、拡大したサイズに合わせて線幅や影もだいたいの値でリサイズしますが、パーツごとに線幅が異なる複雑なイラストになると作業が困難になってしまいます。

そこで、線幅と効果も一緒にリサイズできるようにする2つの方法のご紹介です。

拡張メタファイル形式で線幅と効果をリサイズする

イラストを拡張メタファイル形式に変換してリサイズする方法です。

図形をコピーした状態で、「ホーム」タブ →「クリップボード」グループ →「貼り付け」→「形式を選択して貼り付け」をクリックします。

「形式を選択して貼り付け」ダイアログが開くので、「図(拡張メタファイル)」を選択して「OK」をクリックします。

イラストを「図(拡張メタファイル)」として貼り付けることにより、線幅と影の値も連動してリサイズできるようになりました。

「図(拡張メタファイル)」は、線や文字などの情報が保たれたファイル形式なので、拡大により図が荒れることがほどんどありません。

しかし「図(拡張メタファイル)」には難点があり、一度変換してしまうと図形が一体化してしまう為、再編集ができなくなってしまいます。

なので、元のイラストをバックアップしておく必要があります。

再編集しないのであれば、「図(拡張メタファイル)」形式にしても構いませんが、できればリサイズ後も編集できるのがベストです。

そこで、図形の編集機能を保ったまま線幅と効果もリサイズできるマクロの登場です。

スポンサーリンク

マクロで線幅と効果をリサイズする

イラストにリサイズ後の縦サイズを指定するだけで、線幅と効果も連動してリサイズしてくれるマクロです。

コード

Sub 線幅と効果をリサイズする()

    Dim resizeNum As String
    Dim shp As Shape
    Dim col As New Collection
    Dim col_shp As Shape
    
    'リサイズ値を入力
    resizeNum = InputBox("リサイズする高さを入力してください。" & vbCrLf & _
    "(単位: cm)")
    
    '数値以外が入力された場合はマクロを終了
    If IsNumeric(resizeNum) Then
        ElseIf resizeNum = "" Then
        Exit Sub
    Else
        msg = "数値を入力してください。"
        MsgBox msg
        Exit Sub
    End If
    
    'リサイズ値を「pt」に変換
    resizeNum = Round(resizeNum * 720 / 25.4, 1)
    'リサイズ値を倍率に変換
    resizeNum = resizeNum / ActiveWindow.Selection.ShapeRange.Height
    
    With ActiveWindow.Selection
        For Each shp In .ShapeRange
            '縦横比を固定
            shp.LockAspectRatio = msoTrue
            '図形を拡大
            shp.Height = shp.Height * resizeNum
                
            If shp.Type = msoGroup Then
                'コレクションに要素を追加
                col.Add shp
            Else
                '線幅があればリサイズ
                If shp.Line.Visible = msoTrue Then
                    shp.Line.Weight = shp.Line.Weight * resizeNum
                End If
                '影があればリサイズ
                If shp.Shadow.Visible = msoTrue Then
                    shp.Shadow.Blur = shp.Shadow.Blur * resizeNum
                    shp.Shadow.OffsetX = shp.Shadow.OffsetX * resizeNum
                    shp.Shadow.OffsetY = shp.Shadow.OffsetY * resizeNum
                End If
                '反射があればリサイズ
                If shp.Reflection.Type <> msoReflectionTypeNone Then
                    shp.Reflection.Blur = shp.Reflection.Blur * resizeNum
                    shp.Reflection.Offset = shp.Reflection.Offset * resizeNum
                End If
                '光彩があればリサイズ
                If shp.Glow.Radius > 0 Then
                    shp.Glow.Radius = shp.Glow.Radius * resizeNum
                End If
                'ぼかしがあればリサイズ
                If shp.SoftEdge.Type <> msoSoftEdgeTypeNone Then
                    shp.SoftEdge.Radius = shp.SoftEdge.Radius * resizeNum
                End If
            End If
        Next
    End With

    Do While col.Count > 0
        For Each col_shp In col
            For Each shp In col_shp.GroupItems
                If shp.Type = msoGroup Then
                    'コレクションに要素を追加
                    col.Add shp
                Else
                    '線幅があればリサイズ
                    If shp.Line.Visible = msoTrue Then
                        shp.Line.Weight = shp.Line.Weight * resizeNum
                    End If
                    '影があればリサイズ
                    If shp.Shadow.Visible = msoTrue Then
                        shp.Shadow.Blur = shp.Shadow.Blur * resizeNum
                        shp.Shadow.OffsetX = shp.Shadow.OffsetX * resizeNum
                        shp.Shadow.OffsetY = shp.Shadow.OffsetY * resizeNum
                    End If
                    '反射があればリサイズ
                    If shp.Reflection.Type <> msoReflectionTypeNone Then
                        shp.Reflection.Blur = shp.Reflection.Blur * resizeNum
                        shp.Reflection.Offset = shp.Reflection.Offset * resizeNum
                    End If
                    '光彩があればリサイズ
                    If shp.Glow.Radius > 0 Then
                        shp.Glow.Radius = shp.Glow.Radius * resizeNum
                    End If
                    'ぼかしがあればリサイズ
                    If shp.SoftEdge.Type <> msoSoftEdgeTypeNone Then
                        shp.SoftEdge.Radius = shp.SoftEdge.Radius * resizeNum
                    End If
                End If
            Next
            'コレクションから要素を削除
            col.Remove 1
        Next
    Loop
End Sub

実行結果

リサイズしたいイラストをグループ化した状態で選択します。作例のイラストのサイズは「高さ:3.2cm」「幅:6.4cm」「線幅:3pt」です。

イラストを選択した状態で実行するとダイアログが開くので、リサイズする高さを「cm」単位で入力して「OK」をクリックします。作例では「高さ:8cm」にリサイズします。

高さを「3.2cm」の2.5倍の「8cm」にリサイズしたので、線幅も2.5倍になっていればOKです。線幅を確認すると「3pt」の2.5倍の「7.5pt」になっているので、図形に連動して線幅もリサイズすることができました。

影も同じように連動してリサイズされています。リサイズできる効果は「影」だけでなく、「反射」「光彩」「ぼかし」にも対応しており、混在していてもOKです。

これは超便利!

「線幅と効果をリサイズするマクロ」で、パワポでもIllustratorのように気軽にリサイズできるようになりました。

パワポアートや複数の線幅が混在したオブジェクトなどのリサイズに効果を発揮するでしょう。