
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





















