こんにちは!CorelDRAW VBAの世界へようこそ。
私はこれまで数々の現場でデザインの自動化や生産性向上を支えてきたチーフアーキテクトです。
「マクロの記録ボタンを押して操作を覚えてみたけれど、複雑なループや図形の変形となると、途端に手が止まってしまう……」
そんな壁にぶつかっていませんか?
今回は、初心者の方でも一目で「VBAってこんなにすごいことができるんだ!」と感動でき、かつ実務やクリエイティブな現場で即戦力となるマクロを作ります。テーマは「選択したベクター図形を、一瞬で同心円状に縮小・複製して幾何学アートを生成する自動化スクリプト」です。
手動でこれをやろうとすると、図形を選んで、サイズを少し小さくして、中心を合わせて……と、気が遠くなるような作業ですよね。しかし、CorelDRAW VBAのオブジェクト指向の仕組みを少しだけ知れば、これをわずか数秒、たった1クリックで終わらせることができます。
ここをクリアすれば、CorelDRAW VBAの基本はバッチリですよ。さあ、一緒に扉を開けましょう!
—
1. 開発の舞台裏:なぜ「ループと変形」が強力なのか?
CorelDRAW VBAの最大の武器は、「人間が手作業で行う繰り返し動作(ループ)を、秒速数千回のスピードで正確無比に実行できること」です。
今回作るマクロの戦略はこうです。
1. 現在の選択図形をキャプチャする(あなたが画面上で選んだお気に入りの図形)。
2. 決まった回数(例えば20回)だけループを回す。
3. ループの中で、図形を「少しだけ縮小」し、「元の位置を維持したまま」、「その場に複製」する。
これを実現するために、CorelDRAWが持つ「Matrix(マトリックス)オブジェクト」の概念を少しだけ借りてきます。「難しそう……」と思いましたか?大丈夫、コードのテンプレートは私が用意しました。一つずつ解き明かしていきましょう。
—
2. 実装コード:幾何学アート自動生成マクロ
以下のコードを、CorelDRAWのVBAエディタ(`Alt + F11` で起動)の標準モジュールにそのまま貼り付けてください。
Sub CreateConcentricArt()
‘ — 1. エラーハンドリングと基本設定 —
‘ 画面のちらつきを防ぎ、処理速度を爆発的に上げるおまじない
EventsEnabled = False
ActiveDocument.BeginCommandGroup “同心円アート生成”
On Error GoTo ErrorHandler
‘ — 2. 選択チェック —
‘ 何も選択されていない状態でマクロが暴走するのを防ぎます
If ActiveSelection.Shapes.Count = 0 Then
MsgBox “対象となるベクター図形を一つ以上選択してください。”, vbExclamation, “CorelDRAW 自動化”
GoTo CleanUp
End If
‘ — 3. パラメータの定義 —
Dim originalShape As Shape
Set originalShape = ActiveSelection.Shapes(1) ‘ 最初に選択した図形を基準にする
Dim totalSteps As Integer
totalSteps = 25 ‘ 複製する回数(お好みで変更してください)
Dim scaleFactor As Double
scaleFactor = 0.93 ‘ 1回ごとに何%に縮小するか(0.93なら 93% のサイズに)
Dim i As Integer
Dim currentShape As Shape
Set currentShape = originalShape
‘ — 4. 魔法のループ処理 —
For i = 1 to totalSteps
‘ 図形をその場で複製する
Set currentShape = currentShape.Duplicate
‘ 中心基準で縮小変形を行う
‘ 人間がやるとズレやすい中心合わせも、VBAなら座標計算で一瞬です
currentShape.Stretch scaleFactor, scaleFactor
‘ 色や透明度を段階的に変化させたい場合はここにコードを追加できます
Next i
CleanUp:
‘ — 5. 終了処理 —
ActiveDocument.EndCommandGroup
EventsEnabled = True
Exit Sub
ErrorHandler:
MsgBox “予期せぬエラーが発生しました: ” & Err.Description, vbCritical
Resume CleanUp
End Sub
—
3. コードの心臓部を徹底解説
初心者の方であっても、「ここがどう動いているのか」を理解すれば、応用力が劇的に上がります。重要なポイントを3つに絞って解説します。
① 処理を高速化する「おまじない」
EventsEnabled = False
ActiveDocument.BeginCommandGroup “同心円アート生成”
コードの最初と最後にこれらを入れています。CorelDRAWは、図形が1つ変わるたびに画面の表示を更新(再描画)しようとします。これが処理を重くする原因です。`EventsEnabled = False` にすることで、画面の再描画を裏でストップさせ、「処理が終わってから一気に画面を描画する」ことで、実行スピードを何倍にも跳ね上げています。
② 選択図形の安全な取得
If ActiveSelection.Shapes.Count = 0 Then …
「もし何も選択されていなかったら、処理をストップして優しく警告する」という実務では絶対に欠かせない安全装置です。これを書かないと、存在しないものを操作しようとしてマクロがクラッシュ(強制終了)してしまいます。プロのコードには必ずこうした「守りの記述」が入っています。
③ 複製と変形のコンビネーション
Set currentShape = currentShape.Duplicate
currentShape.Stretch scaleFactor, scaleFactor
CorelDRAW VBAにおける `Duplicate` は、文字通り「目の前にある図形をそのまま真上にコピーする」命令です。コピーした直後の図形を変数 `currentShape` に再びスライドさせ、`Stretch` メソッドで縦横を同率(`scaleFactor`)で縮小しています。これをループさせることで、まるで呼吸をするように綺麗な同心円パターンが立ち現れます。
—
4. 初心者が陥りやすいエラーと回避の極意
VBAを書き始めると、誰もがいくつかの「罠」にハマります。ここで事前に予防線を張っておきましょう。
- エラー1:「オブジェクト変数または With ブロック変数が見つかりません」
- 原因: 図形を何も選択せずにマクロを実行した、または基準となるオブジェクトが正しくセットされていない場合に起きています。
- 対策: 必ずキャンバス上に何らかのベクター図形(星形、円、パスなど)を配置し、それを選択した状態で実行する癖をつけましょう。
- エラー2:意図しない中心から縮小されてしまう
- 原因: CorelDRAWの図形の「変形基準点」がデフォルトで左下や中心以外になっている場合があります。
- 対策: より厳密に中心を固定したい場合は、`currentShape.CenterX` と `currentShape.CenterY` を複製前後で固定するテクニックもありますが、今回の `Stretch` メソッドは標準で中心を維持して縮小するため、まずは今回のコードでその美しさを体感してください。
—
5. さあ、あなただけの幾何学アートを作ろう!
コードの準備ができたら、CorelDRAWで適当な多角形や美しいパスを描き、選択した状態で先ほどのマクロを実行してみてください。
画面が一瞬チカッとした瞬間、目の前には手動では絶対に並べられない、緻密で美しい幾何学模様が描き出されているはずです。
- `totalSteps = 50` に増やしてみたらどうなるか?
- `scaleFactor = 0.98` にして、より繊細なグラデーションにしてみたらどうか?
コードの数字を少し書き換えるだけで、あなたのデザインの引き出しは無限に広がっていきます。ここをクリアできたあなたなら、もう「マクロの記録」だけの初心者ではありません。立派なCorelDRAW自動化エンジニアの第一歩を踏み出しています。
次回の応用編もお楽しみに。あなたのデザインワークが、テクノロジーの力でより自由で楽しいものになりますように!
