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