こんにちは!CorelDRAW VBAの世界へようこそ。
マクロの記録ボタンを押すだけのステージから抜け出し、「自分の手でレイアウトを自在に操るプログラムを書きたい」と思ったなら、あなたはもう立派なエンジニアの卵です。
今回は、実務で絶対に役立つ「新規ページを追加した際に、デフォルトのページ名を『Layout_01』『Layout_02』……と自動連番でリネームするテクニック」を解説します。
ここをクリアすれば、CorelDRAWの「ページ」というオブジェクトがどう動いているのか、そのライフサイクルの基本がバッチリつかめますよ。さあ、一緒に扉を開けましょう!
—
なぜデフォルトのページ名ではダメなのか?
CorelDRAWで複数ページのドキュメントを作るとき、標準の状態では「ページ 1」「ページ 2」……という名前が自動で割り振られます。
しかし、ページ数が数十ページに及ぶカタログや、バリエーション展開を行うデザインデータを扱うとき、これでは「どのページに何があるのか」を一目で判別できません。さらに、外部スクリプトやバッチ処理でデータを書き出す際、日本語のデフォルト名やスペースが含まれていると、思わぬエラーの温床になります。
だからこそ、「ページを追加した瞬間に、プログラムが規則正しい名前をつけてくれる仕組み」を作っておくのが、プロの現場のスマートなやり方なのです。
—
3分でわかるCorelDRAWの「ページ」構造の基本
まずは、CorelDRAW VBAにおけるページの概念をサクッと押さえましょう。
CorelDRAWのドキュメント(`ActiveDocument`)の中には、`Pages`(ページコレクション)という、いわば「ページたちの入った箱」が存在します。その中にある個別のページが `Page`オブジェクト です。
通常、VBAで新しいページを追加するには、以下のようなコードを書きます。
ActiveDocument.AddPages 1 ‘ アクティブドキュメントに1ページ追加する
しかし、これだけでは名前は「ページ X」のまま。追加されたその瞬間に、名前を書き換える命令(`Name`プロパティの変更)をセットで実行してあげる必要があります。
—
実装コード:自動リネーム付きページ追加マクロ
それでは、実際に開発環境(VBAエディタ / Alt + F11)に貼り付けてすぐに使える実用コードを公開します。
今回は、「現在あるページ数をもとに、次の連番を算出して新しいページを綺麗に追加する」というプロシージャです。
Sub AddCustomNamedPage()
Dim targetDoc As Document
Dim newPage As Page
Dim nextIndex As Long
Dim newName As String
‘ 1. 現在アクティブなドキュメントを特定する
Set targetDoc = ActiveDocument
‘ 2. 「現在の総ページ数 + 1」を次の番号とする
‘ ※CorelDRAWのPages.Countは現在のページ数を返します
nextIndex = targetDoc.Pages.Count + 1
‘ 3. 命名規則に従って文字列を組み立てる(例: Layout_01, Layout_02…)
‘ Format関数を使って、常に2桁(0埋め)で表現します
newName = “Layout_” & Format(nextIndex, “00”)
‘ 4. ドキュメントの末尾に新しいページを1つ追加し、変数に格納する
Set newPage = targetDoc.AddPages(1)
‘ 5. 追加したページの名前を書き換える
newPage.Name = newName
‘ 6. 作業完了のフィードバック(おまけ)
MsgBox “新しいページを追加しました:「 & newName & “」”, vbInformation, “自動リネーム完了”
End Sub
コードのここがポイント!
- `Format(nextIndex, “00”)`:
これがちょっとしたプロの技です。「1」であれば「01」、「12」であれば「12」と、桁数を綺麗に揃えてくれるため、ファイル名順に並べ替えたときもきれいにソートされます。
- `Set newPage = targetDoc.AddPages(1)`:
`AddPages`メソッドは、追加したページオブジェクトそのものを返してくれます。そのため、変数に受け取ってすぐ `.Name = …` とプロパティをいじることが可能です。
—
初心者がハマりやすい「3つの罠」と回避策
VBAを書き始めたばかりの頃、誰もが一度は次のような壁にぶつかります。先輩からのアドバイスとして頭の片隅に入れておいてください。
1. すでに同じ名前のページが存在してエラーになる
CorelDRAWでは、同一ドキュメント内に重複したページ名をつけることはできません。「Layout_01」がすでに存在する状態で同じ名前をつけようとすると、ランタイムエラー(実行時エラー)が発生します。
- 対策: 今回のように「総ページ数+1」をベースに自動採番する仕組みにしておけば、名前が被るリスクを完全に排除できます。
2. アクティブドキュメントが開かれていない
CorelDRAWを起動しただけで、何もキャンバスが開いていない(ドキュメントが0個の)状態で上記のマクロを実行すると、`ActiveDocument` が「何もない(Nothing)」状態のため、エラーになります。
- 対策: 本格的なツールを作る際は、最初に `If ActiveDocument Is Nothing Then Exit Sub` といったガード節を入れるのがお作法です。
3. 日本語名での文字化けや予期せぬ挙動
古いバージョンや環境依存文字をページ名に混ぜると、内部管理でトラブルが起きることがあります。
- 対策: 今回のように半角英数字とアンダーバー(`Layout_01` など)をベースに命名規則を作ると、トラブルを未然に防げます。
—
まとめと次のステップ
今回は、新規ページを追加し、デフォルトのページ名を自動連番(`Layout_01`形式)にリネームする基本テクニックを解説しました。
- `ActiveDocument.Pages.Count` で現在の枚数を把握する
- `AddPages(1)` でページを追加しつつ、オブジェクトとして受け取る
- `.Name` プロパティに任意の文字列を代入して書き換える
たったこれだけのコードですが、ここにはCorelDRAW VBAを操るための「オブジェクト操作の基本」がすべて詰まっています。
ここをクリアできれば、次は「テンプレートとなるガイド線を自動で引く処理」や、「全ページのレイアウト情報を一括で取得するループ処理」へとステップアップできますよ。
あなたの自動化ライフが、より快適でクリエイティブなものになりますように。それではまた次の現場でお会いしましょう!
