【入門編】【初心者向け】新規ページを追加した際に、デフォルトのページ名を自動連番(例:Layout_01, Layout_02…)にリネームする – CorelDRAW VBA解析バイブル

スポンサーリンク

こんにちは!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を操るための「オブジェクト操作の基本」がすべて詰まっています。

ここをクリアできれば、次は「テンプレートとなるガイド線を自動で引く処理」や、「全ページのレイアウト情報を一括で取得するループ処理」へとステップアップできますよ。

あなたの自動化ライフが、より快適でクリエイティブなものになりますように。それではまた次の現場でお会いしましょう!

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