CorelDRAW VBAで幾何学アートを操る:マンダラ生成で学ぶ「自動化の快感」
こんにちは。CorelDRAWの自動化の世界へようこそ。
「マクロの記録」ボタンを押して、生成されたコードの羅列に頭を抱えたことはありませんか?実は、CorelDRAWの真の力は、そのコードの背後にある「座標計算の美学」を理解した瞬間に解放されます。
今回は、初心者の方が最初にぶつかる壁を乗り越え、「選択した図形を回転・複製して、一瞬でマンダラ模様を作る」という、実用的かつクリエイティブなマクロを作成しましょう。これを理解すれば、CorelDRAW VBAの基本はマスターしたも同然です。
—
なぜ「手動」ではなく「コード」なのか?
手作業で図形を30度ずつ回転させて複製しようとすると、微妙なズレが生じたり、中心軸がブレたりします。しかし、プログラムは「数学的な絶対値」で動きます。
- 精度: 0.0001度単位の正確な配置。
- 速度: 100個のオブジェクト配置も0.1秒。
- 創造性: 手作業では思いつかない複雑な幾何学模様を、パラメータを変えるだけで瞬時に生成できる。
—
今回のミッション:マンダラ生成ロジック
今回のマクロでは、以下のステップで処理を行います。
1. 現在選択しているオブジェクトを特定する
2. 回転のループを作成する(360度を分割する)
3. 各ステップで「複製」と「回転」を行う
【実装コード】
このコードをVBAエディタ(`Alt + F11`)に貼り付けて実行してみてください。
Sub CreateMandala()
‘ — 設定エリア —
Dim numCopies As Integer: numCopies = 12 ‘ 複製する数
Dim angleStep As Double: angleStep = 360 / numCopies ‘ 一つの回転角
Dim i As Integer
Dim sr As ShapeRange
Dim shp As Shape
‘ 1. 選択範囲を取得
Set sr = ActiveSelectionRange
‘ エラーハンドリング: 何も選択されていない場合
If sr.Count = 0 Then
MsgBox “図形を選択してから実行してください。”
Exit Sub
End If
‘ 2. ループ処理で複製と回転を実行
‘ ※最初の1個は既に存在するので、numCopies – 1 回繰り返す
For i = 1 To numCopies – 1
‘ 選択範囲を複製
Set sr = sr.Duplicate
‘ 複製した各オブジェクトを回転
‘ Rotateメソッド: (角度, 中心点X, 中心点Y)
‘ ここでは現在のページの中心(0,0)を基準に回転させます
sr.Rotate (angleStep i)
Next i
MsgBox numCopies & “個の幾何学パターンが完成しました!”
End Sub
—
コードの解説:ここが「プロの視点」
初心者の方がつまづきやすいポイントを3つだけ解説します。
1. `ActiveSelectionRange` の重要性
`ActiveSelection`ではなく、あえて `ActiveSelectionRange` を使うのがコツです。これを使うことで、単一オブジェクトだけでなく、複数の図形をグループ化せずにまとめて「セット」として扱うことができます。
2. `Duplicate` の戻り値
`sr.Duplicate` を実行すると、CorelDRAWは「新しく生成されたオブジェクトの範囲」を返します。この戻り値を再利用することで、連鎖的な処理が非常にスムーズになります。
3. 回転の基準点
上記のコードでは、図形が本来持っている中心(バウンディングボックスの中心)を軸に回転します。もし「ページ全体を中心に回したい」場合は、`sr.Rotate` ではなく、オブジェクトの `CenterX/Y` プロパティを書き換える高度な行列演算が必要になります。まずはこのコードで「図形が回る感覚」を掴んでください。
—
陥りやすいエラーと回避策
- 「何も選択していないのに実行してしまった」
- 対策:`If sr.Count = 0 Then …` のような条件分岐を必ず入れましょう。プログラムは空っぽの指示に対しても忠実にエラーを吐き出します。
- 「重なりすぎて図形が見えなくなった」
- 対策:`numCopies` を最初は 8 くらいにして試しましょう。また、`Undo`(Ctrl+Z)で一発で戻せるのがVBAのいいところです。恐れずに数値を変更してください。
—
さあ、次はあなたの番です
このコードは、いわば「魔法の杖」の基礎です。
ここからさらに工夫を加えてみましょう。
- 色のグラデーション: ループ内で `shp.Fill.UniformColor.CMYKAssign` を使い、回転するごとに色を少しずつ変化させてみる。
- サイズの縮小: `sr.SetSize` を使って、回るたびに図形を少しずつ小さくしてみる。
CorelDRAW VBAは、あなたの頭の中にあるイメージを、数学という正確な定規で現実に描き出す最高のツールです。このコードが、あなたのクリエイティブな自動化ライフの第一歩になれば幸いです。
何か分からないことがあれば、いつでもまた聞きに来てくださいね。応援しています!
