【入門編】【実務効率化】偶数・奇数ページでガイド線の配置パターンを自動で切り替える製本・面付け用DTP自動化 – CorelDRAW VBA解析バイブル

スポンサーリンク
スポンサーリンク

【実務効率化】偶数・奇数ページでガイド線を自動配置する:製本DTPの「ノド」を制するVBA極意

こんにちは。今日も設計図とコードの間で、最高の効率を追い求めていますか?

CorelDRAWを使って冊子やパンフレットのデザインをしていると、避けては通れないのが「ノド(綴じ代)」の存在です。左右のページで、どこに余白(綴じ代)を確保すべきか。これは、ページ番号が「奇数か、偶数か」によって真逆になりますよね。

「1ページずつガイド線を引いて、位置を確認して……」
もしこれが100ページあったら? 恐ろしい作業です。しかも、手作業だと必ず「あ、35ページ目のノドが逆だ!」というミスが生まれます。

今日は、そんな「人間がやるべきではない作業」を、VBAという魔法を使って一瞬で終わらせる方法を伝授しましょう。マクロの記録から一歩踏み出し、「ロジック(論理)で制御する」感覚を掴んでください。ここをクリアすれば、CorelDRAW VBAの基本はバッチリですよ。

1. ロジックの設計図:偶数と奇数をどう見分けるか?

プログラミングにおいて、最も大切なのはコードを書く前に「手順」を決めることです。今回のミッションはこうです。

1. ドキュメント内のすべてのページを順番に見ていく。
2. そのページが「奇数」か「偶数」かを判定する。
3. 奇数なら「左側」にガイド線を引く。
4. 偶数なら「右側」にガイド線を引く。

ここで登場するのが、数学の「Mod(剰余)」という演算子です。
`ページ番号 Mod 2` を計算したとき、

  • 余りが `1` なら 奇数
  • 余りが `0` なら 偶数

という性質を利用します。これさえ分かれば、コンピュータに「ページ番号の法則」を教え込むことができます。

2. 実装:製本用ガイド自動配置マクロ

それでは、実際に動くコードを見てみましょう。初心者の方でも迷わないよう、丁寧にコメントを添えました。

Option Explicit

''' <summary>
''' ページ番号の偶奇に基づき、製本用のガイド線を自動配置するマクロ
''' </summary>
Sub CreateBookletGuides()
    Dim pg As Page
    Dim marginMm As Double
    
    ' --- 設定エリア ---
    ' 綴じ代(ノド)の距離をミリメートルで指定します
    marginMm = 10# 
    ' ------------------

    ' 1. 単位の固定(超重要!)
    ' ユーザーの設定が「ピクセル」や「インチ」になっていても、
    ' 計算ミスを防ぐために強制的に「ミリメートル」に設定します。
    ActiveDocument.Unit = cdrMillimeter

    ' 2. ページを一つずつループ処理
    For Each pg In ActiveDocument.Pages
        
        ' 既存のガイド線を一旦クリアしたい場合は、ここに削除処理を入れることも可能です。
        ' 今回は「新しく追加する」ロジックに集中します。

        ' 3. 偶奇判定(Mod演算子を使用)
        If pg.Index Mod 2 <> 0 Then
            ' 【奇数ページの場合】
            ' ノドは「左側」にあると想定。左端から marginMm の位置に垂直ガイドを引く。
            ' CreateGuideline(方向, 位置)
            pg.CreateGuideline cdrVertical, marginMm
            
        Else
            ' 【偶数ページの場合】
            ' ノドは「右側」にあると想定。右端から marginMm の位置に垂直ガイドを引く。
            ' 右端の位置は、ページの幅(Width)から marginMm を引いた場所になります。
            pg.CreateGuideline cdrVertical, pg.SizeWidth - marginMm
            
        End If
        
    Next pg

    MsgBox "ガイド線の配置が完了しました!", vbInformation, "完了"
End Sub

3. プロが教える「ここが落とし穴!」3つのポイント

マクロの記録機能(レコーディング)を使っているだけでは気づけない、エンジニアとしての「生存戦略」を教えます。

① 単位(Unit)を制御せよ

これが最も多いエラーの原因です。VBAの世界では、`10` という数字が「10ミリ」なのか「10ピクセル」なのかは、その時のドキュメントの設定次第です。
もし、ユーザーがインチ設定のファイルを開いていた場合、上記のコードをそのまま動かすと、「10インチ(約254mm)」というとんでもない位置にガイド線が飛んでいきます。
必ず `ActiveDocument.Unit = cdrMillimeter` のように、処理の冒頭で単位を明示的に宣言する癖をつけましょう。

② `Index` と `Number` の違い

CorelDRAWのページオブジェクトには `Index` と `Number` があります。基本的には `Index`(オブジェクトとしての並び順)を使うのが安全です。ページを並べ替えたり、特定のページを削除したりする複雑な処理を行う際、`Index` を基準にすることで、予期せぬ動作を防ぐことができます。

③ `Mod` 演算子の魔法

`If pg.Index Mod 2 <> 0 Then`
この一行は、プログラミングにおける「条件分岐」の王道です。
「2で割った余りが0ではない(=1である)とき」という条件は、あらゆる「交互に繰り返すパターン」に応用できます。例えば、背景色を1ページごとに交互に変える、といった処理もこれと同じ考え方です。

4. 次のステップへ:さらなる自動化への道

このコードが理解できたら、あなたはもう「マクロの記録」の檻から脱出しています。

さらに進化させるなら、こんな機能を追加してみるのも面白いでしょう。

  • ダイアログボックスを作る: マクロ実行時に「綴じ代は何mmにしますか?」とユーザーに問いかける。
  • ガイド線の色を変える: `pg.Guides(1).Color.CopyAssign …` を使って、目立つ色にする。
  • 水平ガイドも追加する: 上下のマージン(外周)も同時に制御する。

結びに

プログラミングは、単なる「作業の置き換え」ではありません。「ルールを言語化し、コンピュータに委ねることで、人間はより創造的な仕事に集中する」ための手段です。

今回の「偶数・奇数」のロジックは、DTP自動化におけるもっとも美しい基礎の一つです。これがマスターできれば、複雑な面付けや、大規模なカタログ作成の自動化も、決して夢ではありません。

一歩ずつ、着実に。コードの向こう側にある「自由な時間」を目指して、一緒に進んでいきましょう!

タイトルとURLをコピーしました