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

【パワポVBA】文字に影を設定する/影を非表示にするマクロ

PowerPoint VBAで「文字に影を設定してテキストボックスを作成するマクロ」「テキストボックス内の選択中の文字列に影を設定するマクロ」「影を非表示にするマクロ」をご紹介します。

Msoshadowtypeクラスの定数表もご覧いただけます。

マクロの使い方は、次の記事で解説しています。

PowerPointマクロ入門 | コピペで始める楽々コース

PowerPointマクロ入門 | コピペで始める楽々コース
PowerPointでマクロを始めたいけど、難しそうでよく分からないという方向けの入門編です。PPD…
スポンサーリンク
スポンサーリンク

文字に影を設定してテキストボックスを作成するマクロ

影を設定したテキストボックスを作成するマクロです。

Sub CreateTextBoxShadow()

    Dim n As Long
    Dim sld As Slide
    Dim shp As Shape
    
    '選択中のスライドを取得
    n = ActiveWindow.Selection.SlideRange.SlideIndex
    Set sld = ActivePresentation.Slides(n)

    'テキストボックスを作成
    Set shp = sld.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 300, 100)

    'テキストを設定
    shp.TextFrame.TextRange.Text = "サンプルテキスト"

    'フォントを設定
    With shp.TextFrame.TextRange.Font
        .Name = "游ゴシック" 'フォント名
        .Size = 36 'フォントサイズ
        .Color.RGB = RGB(0, 0, 0) 'フォント色
    End With
    
    'テキストの折り返しを無効化
    shp.TextFrame.WordWrap = msoFalse
    
    '影を設定
    With shp.TextFrame2.TextRange.Font.Shadow
        .Type = msoShadow21 '標準スタイル(オフセット:右下)
        .ForeColor.RGB = RGB(0, 0, 0) '色
        .Transparency = 0.6 '透明度
        .Size = 100 'サイズ
        .Blur = 4 'ぼかし
        .OffsetX = 2.1213203436 '角度、距離
        .OffsetY = 2.1213203436 '角度、距離
    End With
    
End Sub

影の設定を変更しない場合は「.Type = msoShadow21」以下の項目は必要ありません。「msoShadow21」で標準スタイルの「オフセット:右下」を指定しています。

影の「角度」と「距離」は「OffsetX」と「OffsetY」で指定する必要があるので、希望の値にするのは困難でしょう。サンプルコードは「角度:45°」と「距離:3pt」になるように設定しています。

Msoshadowtypeクラスの定数

標準スタイルの「オフセット:右下」以外の種類を指定したい場合は、以下の表を参考に入力してください。

標準スタイル 定数
オフセット:右下 msoShadow21
オフセット:下 msoShadow22
オフセット:左下 msoShadow23
オフセット:右 msoShadow24
オフセット:中央 msoShadow25
オフセット:左 msoShadow26
オフセット:右上 msoShadow27
オフセット:上 msoShadow28
オフセット:左下 msoShadow29
内側:左上 msoShadow30
内側:上 msoShadow31
内側:右下 msoShadow32
内側:左 msoShadow33
内側:中央 msoShadow34
内側:右 msoShadow35
内側:左下 msoShadow36
内側:下 msoShadow37
内側:右下 msoShadow38
透視投影:左上 msoShadow39
透視投影:右上 msoShadow40
透視投影:下 msoShadow41
透視投影:左下 msoShadow42
透視投影:右下 msoShadow43

テキストボックス内の選択中の文字列に影を設定するマクロ

選択中のテキストボックスに影を設定、またはテキストボックス内の選択中の文字列に影を設定するマクロです。

Sub SelectedTextShadow()

    '選択したオブジェクトがテキストボックスであることを確認
    If ActiveWindow.Selection.ShapeRange(1).HasTextFrame Then
    
        '影を設定
        With ActiveWindow.Selection.TextRange2.Font.Shadow
            .Type = msoShadow21 '標準スタイル(オフセット:右下)
            .ForeColor.RGB = RGB(0, 0, 0) '色
            .Transparency = 0.6 '透明度
            .Size = 100 'サイズ
            .Blur = 4 'ぼかし
            .OffsetX = 2.1213203436 '角度、距離
            .OffsetY = 2.1213203436 '角度、距離
        End With
    
    End If
End Sub

影の設定を変更しない場合は「.Type = msoShadow21」以下の項目は必要ありません。「msoShadow21」で標準スタイルの「オフセット:右下」を指定しています。

影の「角度」と「距離」は「OffsetX」と「OffsetY」で指定する必要があるので、希望の値にするのは困難でしょう。サンプルコードは「角度:45°」と「距離:3pt」になるように設定しています。

文字の影を非表示にするマクロ

選択中のテキストボックスの影を非表示、またはテキストボックス内の選択中の文字列の影を非表示にするマクロです。

Sub SelectedTextShadowHidden()

    '選択したオブジェクトがテキストボックスであることを確認
    If ActiveWindow.Selection.ShapeRange(1).HasTextFrame Then
    
        '影を非表示にする
        ActiveWindow.Selection.TextRange2.Font.Shadow.Visible = msoFalse
    
    End If
End Sub