こんにちは!CorelDRAW VBAの世界へようこそ。
マクロの記録ボタンを押して操作を再現するだけの日々は、今日で卒業です。
今回は、CorelDRAW VBAにおける自動化の第一歩として、「ドキュメントの総ページ数を動的に取得し、ログに出力する」という超基本にして極めて重要なテクニックを解説します。
ここをクリアすれば、複数ページにわたるチラシ、カタログ、冊子などの一括処理を行うマクロの骨組みが完全に自分のものになりますよ。さあ、一緒に扉を開きましょう!
—
なぜ「ページ数の動的取得」が必要なのか?
皆さんは普段、何ページもあるドキュメントをデザインするとき、ページ数を数えながら手作業で何かを設定していませんか?
VBAを書く上で一番やってはいけないアンチパターンが、「ページ数をコードに直接書き込んでしまうこと(ハードコーディング)」です。
例えば、「全5ページ」と決め打ちしてコードを書いたとします。しかし、明日急に「4ページ」の仕事が来たら? エラーが出るか、最後のページが処理されずに取り残されてしまいますよね。
だからこそ、「今開いているドキュメントには、何ページあるのか?」をプログラム自身に数えさせ、その数値(動的な値)に合わせて処理を分岐・ループさせる必要があるのです。
—
魔法のプロパティ:`ActiveDocument.Pages.Count`
CorelDRAW VBAで現在アクティブなドキュメントのページ数を取得するには、以下のたった1行のコードを使います。
ActiveDocument.Pages.Count
これだけで、今開いているドキュメントの総ページ数が整数(Long型)として返ってきます。
- `ActiveDocument`: 今、画面上であなたが作業している(アクティブな)ドキュメントを指します。
- `Pages`: そのドキュメントが持つ「ページたち」のコレクション(集まり)です。
- `Count`: 「いくつあるか?」を数えて教えてくれるプロパティです。
非常に直感的で分かりやすい構造をしていますね。
—
【実践】総ページ数をログ(イミディエイトウインドウ)に出力するマクロ
それでは実際に、VBAエディタ(VBE)にコードを書いてみましょう。
以下のコードをそのままコピー&ペーストして実行してみてください。
Sub ShowTotalPages()
‘ —————————————————-
‘ 処理名: 現在のドキュメントの総ページ数を取得してログ出力する
‘ 解説: 初学者が一番最初に覚えるべきActiveDocumentの操作です
‘ —————————————————-
Dim totalPages As Long
‘ 安全装置:現在開いているドキュメントがあるかチェック
If ActiveDocument Is Nothing Then
MsgBox “ドキュメントが開かれていません。ファイルを開いてから実行してください。”, vbCritical, “エラー”
Exit Sub
End
‘ 総ページ数を変数に格納する
totalPages = ActiveDocument.Pages.Count
‘ VBEのイミディエイトウインドウに結果を出力する
Debug.Print “【CorelDRAW自動化ログ】 現在のドキュメントの総ページ数は: ” & totalPages & ” ページです。”
‘ 画面上でも確認できるようにメッセージボックスを表示
MsgBox “このドキュメントの総ページ数は ” & totalPages & ” ページです。”, vbInformation, “ページ数取得完了”
End Sub
コードのポイント解説(先輩エンジニアからのアドバイス)
1. 変数の型宣言(`Dim totalPages As Long`)
ページ数は整数なので、`Long`型(または`Integer`型)の変数に受け取ります。変数を宣言して型を明確にすることは、バグを防ぐプログラミングの基本中の基本です。
2. 安全装置(`If ActiveDocument Is Nothing Then`)
CorelDRAWを起動しただけで、まだ何もドキュメントを開いていない状態でこのマクロを実行すると、`ActiveDocument`が存在しないため「オブジェクト変数または With ブロック変数が見つかりません。」という有名な実行時エラー(エラー424)が発生します。
これを防ぐために、「もしドキュメントが開かれていなかったら、優しく警告して処理を中断する」という安全装置を入れるのがプロの作法です。
3. `Debug.Print` によるログ出力
画面にポップアップ(メッセージボックス)を出すだけでなく、VBEの「イミディエイトウインドウ」に文字を出力する `Debug.Print` を使っています。将来的に100ページある冊子の処理などをループで回す際、進捗や結果をログとして確認するのに非常に重宝します。
—
デバッグ画面(ログ)の出し方
先ほどのコードを実行した際、`Debug.Print` の出力結果はどこに表示されるのでしょうか? 初めての方は迷いがちなので確認しておきましょう。
1. CorelDRAWで `[Alt] + [F11]` キーを押して、VBAエディタを開きます。
2. メニューバーの [表示] > [イミディエイト ウィンドウ] をクリック(または `[Ctrl] + [G]` キーを押す)。
3. 画面下部に現れた白いウィンドウに、「【CorelDRAW自動化ログ】…」と表示されていれば大成功です!
—
まとめと次のステップ
今回は、CorelDRAW VBAでページ数を動的に取得し、ログに出力する基本マクロについて解説しました。
- `ActiveDocument.Pages.Count` で現在のページ数が一発で取得できること
- ドキュメントが開かれていない状態のエラー(`ActiveDocument Is Nothing`)に配慮すること
- 結果はメッセージボックスだけでなく、`Debug.Print` でログに残せること
ここをクリアすれば、次は「取得したページ数を上限として、すべてのページを順番にループ処理(`For文`)する」という、実務でバリバリ使える自動化のステージに進むことができます。
基本をしっかりと押さえたあなたなら、もう怖くありません。ぜひ自分の手でコードを動かして、CorelDRAW VBAの心地よさを体感してくださいね!
