【Word VBA】五葉線模様描画マクロ▽ソースコード

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

Option Explicit
Option Base 0
'
Public Sub 五葉線模様描画マクロ()
    Const FVLVLEFT = 80        '描画中心位置X
    Const FVLVTOPP = 80     '      Y
    '
    Const FVLVANSP = 5      '描画刻み角度
    Const FVLVRATE = 12      '線の長さレート
    '
    Const FVLVVPIT = FVLVRATE * 4.2    '横-間隔
    Const FVLVHPIT = FVLVRATE * 4.2    '縦-間隔
    Const FVLVCOLS = 6                        '横/描画数
    Const FVLVROWS = 4                       '縦/描画数
    '
    Const FVLVRAT1 = 1.2                      '大きい倍率
    Const FVLVRAT2 = 0.75                    '小さい倍率
    Const FVLVLNWE = 1                       '線の太さ
   '---------------------------------------------------------------------------
    Dim Ip As Integer, Jp As Integer
    Dim Kp As Integer
    Dim intCxp As Integer, intCyp As Integer
    Dim sngPBas(360 / FVLVANSP, 1) As Single
    Dim sngPDat(360 / FVLVANSP, 1) As Single
    Dim sngSit As Single, sngRpd As Single
    Dim sngRds As Single, lngCol(1) As Long
    Dim sngRat As Single
    '
    '*五葉線曲線ポリラインデータ作成
    sngRpd = Atn(1) / 45
    For Kp = 0 To UBound(sngPBas, 1)
        sngSit = sngRpd * (Kp * FVLVANSP)
        sngRds = 1 + Cos(5 * sngSit)
        sngPBas(Kp, 0) = (sngRds * Cos(sngSit)) * FVLVRATE
        sngPBas(Kp, 1) = (sngRds * Sin(sngSit)) * FVLVRATE
    Next Kp
    '
    lngCol(0) = RGB(205, 92, 92)              '←線色
    lngCol(1) = RGB(154, 205, 50)            '←塗りつぶし
    For Jp = 0 To FVLVROWS - 1
        intCyp = FVLVTOPP + FVLVHPIT * Jp _
                          + FVLVVPIT \ 2
        For Ip = 0 To FVLVCOLS - 1
            intCxp = FVLVLEFT + FVLVVPIT * Ip _
                          + FVLVHPIT \ 2
            sngRat = IIf(((Ip + Jp) Mod 2) = 0, _
                         FVLVRAT1, FVLVRAT2)
            '*ポリライン位置設定
            For Kp = 0 To UBound(sngPBas, 1)
                sngPDat(Kp, 0) = sngPBas(Kp, 0) * sngRat + intCxp
                sngPDat(Kp, 1) = sngPBas(Kp, 1) * sngRat + intCyp
            Next Kp
            '*ポリライン描画
            With ActiveDocument.Shapes.AddPolyline(sngPDat)
                .Fill.Visible = msoTrue
                .Fill.ForeColor = lngCol(1)           '←塗りつぶし
                .Line.Visible = msoTrue
                .Line.ForeColor = lngCol(0)         '←線色
                .Line.Weight = FVLVLNWE          '←線の太さ
                .Rotation = 45 * (Ip + Jp)          '←図形の回転
            End With
        Next Ip
    Next Jp
End Sub

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