Excel VBA 図形(シェイプ)に光源を設定する

スポンサーリンク

図形(シェイプ)に光源を設定する

3D効果を設定した図形(シェイプ)を照らす光源のタイプや強さ、方向などを設定するには、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの以下のプロパティを使用して設定します。

3D図形に光源を設定する主なプロパティ一覧

プロパティ 内容
PresetLighting
【プリセットライティング】
光源のタイプを設定します。
PresetLightingSoftness
【プリセットライティングソフィネス】
光源の強さを設定します。
PresetLightingDirection
【プリセットライティングディレクション】
光源の方向を設定します。

PresetLighting
【プリセットライティング】プロパティ

3D効果を設定した図形を照らす光源のタイプを設定するには、立体の書式設定を表す
TreeDFormat【スリーディフォーマット】オブジェクトのPresetLighting【プリセットライティング】プロパティを使用します。

PresetLighting【プリセットライティング】プロパティの書式と設定値の説明

オブジェクト.PresetLighting = 設定値

  • オブジェクト(必須)
    Worksheet【ワークシート】オブジェクトのShapes【シェイプス】プロパティ、またはShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで取得した、図形を表Shape【シェイプ】オブジェクトのTreeD【スリーディ】プロパティで取得した、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    光源のタイプをMsoLightRigType列挙型の定数または値で指定します。

    MsoLightRigType列挙型
    名前 内容 イメージ
    msoLightRigLegacyFlat1 1 フラット1
    msoLightRigLegacyFlat2 2 フラット2
    msoLightRigLegacyFlat3 3 フラット3
    msoLightRigLegacyFlat4 4 フラット4
    msoLightRigLegacyNormal1 5 ノーマル1
    msoLightRigLegacyNormal2 6 ノーマル2
    msoLightRigLegacyNormal3 7 ノーマル3
    msoLightRigLegacyNormal4 8 ノーマル4
    msoLightRigLegacyHarsh1 9 強い効果1
    msoLightRigLegacyHarsh2 10 強い効果2
    msoLightRigLegacyHarsh3 11 強い効果3
    msoLightRigLegacyHarsh4 12 強い効果4
    msoLightRigThreePoint 13 3 点効果(既定値)
    msoLightRigBalanced 14 バランス効果
    msoLightRigSoft 15 ソフト効果
    msoLightRigHarsh 16 直射光効果
    msoLightRigFlood 17 拡散光効果
    msoLightRigContrasting 18 コントラスト効果
    msoLightRigMorning 19 朝効果
    msoLightRigSunrise 20 日の出効果
    msoLightRigSunset 21 日の入り効果
    msoLightRigChilly 22 冷たい効果
    msoLightRigFreezing 23 寒い効果
    msoLightRigFlat 24 フラット効果
    msoLightRigTwoPoint 25 2 点効果
    msoLightRigGlow 26 光彩効果
    msoLightRigBrightRoom 27 明るい室内効果

PresetLightingSoftness
【プリセットライティングソフィネス】プロパティ

3D効果を設定した図形を照らす光源の強さを設定するには、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトのPresetLightingSoftness【プリセットライティングソフィネス】プロパティを使用します。

PresetLightingSoftness【プリセットライティングソフィネス】プロパティの書式と設定値の説明

オブジェクト.PresetLightingSoftness = 設定値

  • オブジェクト(必須)
    Worksheet【ワークシート】オブジェクトのShapes【シェイプス】プロパティ、またはShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで取得した、図形を表すShape【シェイプ】オブジェクトのTreeD【スリーディ】プロパティで取得した、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    光源の強さをMsoPresetLightingSoftness列挙型の定数または値で指定します。

    MsoPresetLightingSoftness列挙型
    定数 内容 イメージ
    msoLightingDim 1 暗い光源
    msoLightingNormal 2 標準の光源(既定値)
    msoLightingBright 3 明るい光源

※光源のタイプを表すPresetLighting【プリセットライティング】プロパティが未設定または既定値の定数msoLightRigThreePointまたは値13が設定されている場合は、光源の強さを表すPresetLightingSoftness【プリセットライティングソフィネス】プロパティの設定は反映されません。


PresetLightingDirection
【プリセットライティングディレクション】プロパティ

3D効果を設定した図形を中心として、光源の方向を設定するには、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトのPresetLightingDirection【プリセットライティングディレクション】プロパティを使用します。

PresetLightingDirection【プリセットライティングディレクション】プロパティの書式と設定値の説明

オブジェクト.PresetLightingDirection = 設定値

  • オブジェクト(必須)
    Worksheet【ワークシート】オブジェクトのShapes【シェイプス】プロパティ、またはShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドで取得した、図形を表Shape【シェイプ】オブジェクトのTreeD【スリーディ】プロパティで取得した、立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトを指定します。
  • 設定値(必須)
    光源の方向を
    MsoPresetLightingDirection列挙型の定数または値で指定します。

    MsoPresetLightingDirection列挙型
    定数 内容 イメージ
    msoLightingTopLeft 1 左上
    msoLightingTop 2 上部(既定値)
    msoLightingTopRight 3 右上
    msoLightingLeft 4
    msoLightingNone 5 光源なし
    msoLightingRight 6
    msoLightingBottomLeft 7 左下
    msoLightingBottom 8 下部
    msoLightingBottomRight 9 右下

27種類の光源タイプを当てた図形を作成するコードと解説

Sub 光源()
Dim R As Range
Dim i As Integer
For i = 1 To 27
Set R = Cells(2, i)
With ActiveSheet.Shapes.AddShape(1, R.Left, R.Top, R.Width, R.Height).ThreeD
.BevelTopType = 6
.BevelTopDepth = 18
.BevelTopInset = 18
.PresetLighting = i
.PresetLightingSoftness = 3
.PresetLightingDirection = 8
End With
Next i
End Sub
2行目【Dim R As Range】
図形の位置と大きさの基準となるセル範囲を格納する変数「R」をオブジェクト型(Range)で宣言します。


3行目【Dim i As Integer】
セルの列番号と光源のタイプの値を兼ねる繰り返し処理の中で使用されるカウンター変数「i」を整数型(Integer)で宣言します。


4行目【For i = 1 To 27】
For Next【フォアネクスト】ステートメントを使用して繰り返し処理の始まりです。1~27の値を繰り返し処理の中で順次カウンター変数iに代入します。


5行目【Set R = Cells(2, i)】
2行目のi列のセルをオブジェクト変数RにSetキーワードを使用して代入します。


6行目【With ActiveSheet.Shapes.AddShape(1, R.Left, R.Top, R.Width, R.Height).ThreeD】
Worksheet【ワークシート】オブジェクトの図形の集まりを表すShapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドを使用して図形を表す、Shape【シェイプ】オブジェクトを取得します。

取得したShape【シェイプ】オブジェクトのThreeD【スリーディ】プロパティを使用して立体の書式設定を表すThreeDFormat【スリーディフォーマット】オブジェクトを取得してWith【ウィズ】ステートメントで指定します。


7行目~9行目【.BevelTopType = 6
.BevelTopDepth = 18
.BevelTopInset = 18】

With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの図形の表面の面取りのタイプを設定するBevelTopType【ベベルトップタイプ】プロパティに角度タイプを表す値6を設定します。

図形の表面の面取りの奥行きをポイント単位で設定するBevelTopDepth【ベベルトップディプス】プロパティに18ポイントを設定します。図形の表面の面取りの高さをポイント単位で設定するBevelTopInset【ベベルトップインセット】プロパティに18ポイントを設定します。


10行目【 .PresetLighting = i】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの光源のタイプを設定するPresetLighting【プリセットライティング】プロパティにカウンター変数iを設定して繰り返し処理の中1~27の値を設定します。


11行目【.PresetLightingSoftness = 3】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの光源の強さを設定するPresetLightingSoftness【プリセットライティングソフィネス】プロパティに「明るい光源」を表す3を設定します。


12行目【 .PresetLightingDirection = 8】
With【ウィズ】ステートメントで指定した立体の書式設定を表すTreeDFormat【スリーディフォーマット】オブジェクトの光源の位置を設定するPresetLightingDirection【プリセットライティングディレクヨン】プロパティに下部からの光源を表す8を設定します。


実行結果


以上で、図形(シェイプ)に光源を設定する方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告