おすすめパワポ本12選!プロから学ぶ資料作成術

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

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

PowerPointで線幅と効果も図形と一緒に拡大縮小したい場合は、SVG形式に変換する必要があります。

スポンサーリンク
スポンサーリンク

通常のサイズ変更

下図のPowerPointで作ったマンガ肉(作り方を参照)をサイズを変更します。

肉と骨の輪郭に線幅、肉の陰影に効果の影を設定しています。

このマンガ肉を拡大すると線幅と影の値は元のままで、拡大すればするほど上図のように全体のサイズに対して線と影が細くなってしまいます。

そこで、線幅と効果も一緒に拡大縮小する方法をバージョンごとにご紹介します。

SVG形式でサイズ変更

PowerPoint 2019、Microsoft 365ならSVG形式に変換してサイズを変更します。

オブジェクトを「Ctrl + C」キーでコピーした状態で「Ctrl + Alt + V」キーを押し、「形式を選択して貼り付け」ダイアログボックスを開きます。

「貼り付ける形式」から「画像(SVG)」を選択し、「OK」をクリックします。

SVG形式に変換すると、線幅と効果が図形と一緒に拡大縮小します。

SVG形式に変換したオブジェクトは、グループ化を解除することで図形に戻せます。しかし、影などの効果を設定した部分が上図のように画像化されて分離してしまうので、変換前に元のオブジェクトをバックアップしておくのがおすすめです。

拡張メタファイル形式でサイズ変更

PowerPoint 2016なら拡張メタファイル形式に変換してサイズを変更します。

オブジェクトを「Ctrl + C」キーでコピーした状態で「Ctrl + Alt + V」キーを押し、「形式を選択して貼り付け」ダイアログボックスを開きます。

「貼り付ける形式」から「図(拡張メタファイル)」を選択し、「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のように気軽にサイズを変更できるようになりました。

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