【Word VBA】丸く並べるベジェ曲線描画マクロ▽ソースコード

記事
IT・テクノロジー
HC230623A.png

Option Explicit
Option Base 0
'
Public Sub 丸く並べるベジェ曲線描画マクロ()
    Const CIBZOCXP = 180    '外円の中心位置X
    Const CIBZOCYP = 190    '  Y
    Const CIBZICXP = 160     '内円の中心位置X
    Const CIBZICYP = 160     '  Y
    '
    Const CIBZLNCN = 36           '線の数
    Const CIBZORAD = 100        '外円の半径
    Const CIBZIRAD = 25           '内円の半径
    '
    Const CIBZOMIS = 30          'ベジエ曲線ずれ
    Const CIBZIMIS = 15
    '
    Const CIBZLNCL = &H3C14DC    '線の色
    Const CIBZLNWE = 2                 '線の太さ
    '---------------------------------------------------------------------------
    Dim Ip As Integer
    Dim intAng As Integer, sngRdi As Single
    Dim sngSit(2) As Single
    Dim sngBDt(3, 1) As Single
    '
    sngRdi = Atn(1) / 45
    intAng = 360 \ CIBZLNCN
    For Ip = 0 To CIBZLNCN - 1
        sngSit(0) = sngRdi * (intAng * Ip)
        sngSit(1) = sngRdi * (intAng * Ip + 90)
        sngSit(2) = sngRdi * (intAng * Ip - 90)
        '外円点
        sngBDt(0, 0) = CIBZORAD * Cos(sngSit(0)) + CIBZOCXP
        sngBDt(0, 1) = CIBZORAD * Sin(sngSit(0)) + CIBZOCYP
        '内円点
        sngBDt(3, 0) = CIBZIRAD * Cos(sngSit(0)) + CIBZICXP
        sngBDt(3, 1) = CIBZIRAD * Sin(sngSit(0)) + CIBZICYP
        '*ベジェ曲線(中2点)データ
        sngBDt(1, 0) = CIBZOMIS * Cos(sngSit(1)) + sngBDt(0, 0)
        sngBDt(1, 1) = CIBZOMIS * Sin(sngSit(1)) + sngBDt(0, 1)
        sngBDt(2, 0) = CIBZIMIS * Cos(sngSit(2)) + sngBDt(3, 0)
        sngBDt(2, 1) = CIBZIMIS * Sin(sngSit(2)) + sngBDt(3, 1)
        '*ベジェ曲線描画
        With ActiveDocument.Shapes.AddCurve(sngBDt)
             .Fill.Visible = msoFalse
             .Line.Visible = msoTrue
             .Line.ForeColor.RGB = CIBZLNCL
             .Line.Weight = CIBZLNWE
        End With
       '
   Next Ip
End Sub

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す