CorelDRAW VBAを掌握せよ:裁ち落とし(ブリード)用ガイド線自動生成の極意
こんにちは。CorelDRAWの自動化の世界へようこそ。
「マクロの記録」ボタンを押して生成された、冗長で意味不明なコードを見て絶望したことはありませんか? あれはあくまで「自動化への入り口」に過ぎません。真のエンジニアは、CorelDRAWのオブジェクトモデルを支配し、数学的な精度でドキュメントを操ります。
今回は、印刷所入稿で必須となる「仕上がりサイズ外側への裁ち落とし用ガイド線自動生成」をテーマに、CorelDRAW VBAの「作法」を伝授します。これさえ理解すれば、あなたはもう作業の奴隷ではなく、デザインの指揮者になれます。
—
1. なぜ「ガイド線」をコードで引くのか?
手動でガイド線を引くのは、時間の浪費であり、ヒューマンエラーの温床です。
例えば、A4サイズ(210x297mm)で3mmの塗り足しが必要な場合、正確に配置するのは面倒ですよね。VBAを使えば、「現在のドキュメントサイズを取得し、その外側に指定ミリメートル分だけオフセットした線を引く」という処理を、わずか数ミリ秒で完結させられます。
—
2. 実装コード:プロのエンジニアが書く「裁ち落とし生成」
以下が、今回お伝えする魔法のコードです。標準モジュールに貼り付けて実行してください。
Sub CreateBleedGuides()
‘ ドキュメントの単位をミリメートルに固定(重要:これをしないと環境依存で事故る)
Dim oldUnit As cdrUnit
oldUnit = ActiveDocument.Unit
ActiveDocument.Unit = cdrMillimeter
‘ 現在のアクティブページを取得
Dim p As Page
Set p = ActivePage
‘ 塗り足し幅の設定(今回は3mm)
Dim bleed As Double
bleed = 3
‘ ガイド線を引く(引数:位置, 向き)
‘ 現在のページの端からマイナス3mm(外側)の位置にガイドを配置
‘ CorelDRAWの座標系は左下が原点(0,0)であることに注意
‘ 左側のガイド
p.Guides.Add(p.LeftX – bleed)
‘ 右側のガイド
p.Guides.Add(p.LeftX + p.SizeWidth + bleed)
‘ 下側のガイド
p.Guides.Add(p.BottomY – bleed)
‘ 上側のガイド
p.Guides.Add(p.BottomY + p.SizeHeight + bleed)
‘ 単位を元に戻す(良きエンジニアの気遣い)
ActiveDocument.Unit = oldUnit
MsgBox “裁ち落とし用ガイドの配置が完了しました!”, vbInformation
End Sub
—
3. このコードに隠された「極限の知見」
このコードが単なる「動くコード」以上の意味を持つ理由を3点解説します。
① 環境依存を排除する `Unit` の制御
VBA初心者が最も陥る罠が「単位」です。ユーザーのPCがインチ設定かミリ設定かによって、ガイドの位置が狂うことがあります。コード冒頭で必ず `ActiveDocument.Unit` を明示的に設定し、終了後に戻す。これがプロの「汚さない」作法です。
② `ActivePage` のオブジェクトモデル
CorelDRAWでは「ドキュメント」の中に「ページ」があり、その中に「ガイド線」のコレクションが存在します。`p.Guides.Add` というメソッドを使うことで、手動で線を引くよりも圧倒的に正確な位置にガイドを刻み込めます。
③ 座標系の理解(左下原点)
CorelDRAWの座標は、左下が原点 (0,0) です。
- `LeftX`(左端)からマイナスに動かせば外側
- `BottomY`(下端)からマイナスに動かせば外側
この方向の法則さえ理解すれば、どんな複雑なレイアウトでも計算可能になります。
—
4. 陥りやすいエラーと対処法
- 「オブジェクトがありません」エラー:
`ActiveDocument` が開いていない状態で実行しようとすると発生します。コードの冒頭に `If Documents.Count = 0 Then Exit Sub` を入れるだけで、クラッシュを防ぐ堅牢なコードになります。
- ガイドが大量に増え続ける:
何度も実行するとガイドが重なります。実務的には、実行前に `p.Guides.All.Delete` で既存のガイドをリセットする処理を一行加えるのが「現場の知恵」です。
—
最後に:ここから先の世界へ
このガイド線自動生成は、CorelDRAW自動化の「基礎の基礎」です。
ここをクリアしたあなたは、次は「特定のレイヤーにだけガイドを引く」「PDF書き出しまで自動化する」「ページごとに異なる裁ち落とし幅を適用する」といった、より高度な領域へ進む準備ができています。
自動化の本質は、「手を動かすこと」から「仕組みを設計すること」へのシフトです。
今日書いたこのコードが、あなたの業務を劇的に軽くし、クリエイティブな時間を生み出すことを願っています。
何か詰まったら、いつでも聞いてください。コードは裏切りません。さあ、次はどんな自動化を企みますか?
