【入門編】【初心者向け】アクティブページの全ベクターオブジェクトの総数をカウントしメッセージボックスで即座に通知する基本コード – CorelDRAW VBA解析バイブル

スポンサーリンク

CorelDRAW VBAの深淵へようこそ:まずは「全シェイプ数カウント」から始めよう

こんにちは。CorelDRAWの自動化の世界へようこそ。
マクロの記録ボタンを押して「なんとなく動いたからOK」という段階から一歩踏み出し、自分の手でコードを操る楽しさを知りたい――そう願うあなたを、私は全力でサポートします。

CorelDRAW VBAにおいて、最も基本にして最も重要な技術、それは「ドキュメント内のオブジェクトを正しく走査すること」です。今回は、アクティブページにあるすべてのベクターオブジェクトを数え上げるプログラムを通じて、自動化の「作法」を伝授しましょう。

1. なぜ「Shapesコレクション」なのか?

CorelDRAWの内部では、ページ上のすべてのオブジェクトは`Shapes`という「入れ物(コレクション)」に格納されています。

プログラミング初心者の方が陥りやすいのが、「図形を一つずつ探す」という発想ですが、VBAでは「ページという箱を開けて、中に入っているシェイプの数を数える」という考え方をします。これが、CorelDRAW自動化の第一歩であり、すべてです。

2. 【即戦力コード】全シェイプをカウントする

以下のコードをVBAエディタに貼り付けてみてください。まずは動かして、その挙動を体感することが上達への近道です。

Sub CountActiveShapes()
‘ 1. 変数の宣言(メモリを効率的に使うための基本作法)
Dim doc As Document
Dim pg As Page
Dim shapeCount As Long

‘ 2. 現在アクティブなドキュメントとページを特定
Set doc = ActiveDocument
Set pg = doc.ActivePage

‘ 3. シェイプの数をカウント
‘ ShapesコレクションのCountプロパティは非常に強力です
shapeCount = pg.Shapes.Count

‘ 4. 結果を通知
MsgBox “現在のページにあるオブジェクトの総数は ” & shapeCount & ” 個です。”, vbInformation, “カウント完了”
End Sub

コードの解説:ここがポイント

  • `Dim` ステートメント: これで箱(変数)を用意します。`Long`型は整数を扱うための型で、数千個のオブジェクトがあっても余裕で対応できるサイズです。
  • `Set` ステートメント: `Document`や`Page`は「オブジェクト」という特殊なデータ型です。これらを扱う際は、必ず`Set`を使って「このオブジェクトをこの変数に入れるよ」と教えてあげる必要があります。
  • `pg.Shapes.Count`: これが今回一番伝えたかった魔法の呪文です。CorelDRAWのエンジンが裏側で一瞬にして計算してくれます。

3. 初学者が陥りやすい「罠」と回避策

現場のエンジニアとして、皆さんがこれから遭遇するであろう「つまづきポイント」を先に教えておきます。

罠①:ドキュメントが開いていない

`ActiveDocument`は、ドキュメントが一つも開かれていない状態で実行すると「エラー」になります。
対策: 実務では、冒頭に `If Documents.Count = 0 Then Exit Sub` のようなチェックを入れるのがプロの流儀です。

罠②:グループ化されたオブジェクトの扱い

`Shapes.Count`は、グループ化された「グループそのもの」を1個として数えます。もし「グループを解除して中のパーツまで全て数えたい」という場合は、再帰処理(自分自身を呼び出す特殊なループ)が必要になります。今回は基本編ですので、まずは「グループ=1個」という仕様を覚えておきましょう。

4. 次のステップへ:自動化の楽しさを掴む

このコードが動いたあなたは、すでにCorelDRAW自動化エンジニアの入り口に立っています。
次は、「特定のレイヤーだけ数えるには?」「塗りつぶしがないシェイプだけ除外するには?」といった応用が待っています。

自動化の醍醐味は、「面倒な作業をコードに押し付け、自分は創造的な作業に集中すること」です。

まずはこのコードをいじって、メッセージボックスの内容を変えてみたり、別のプロパティ(例えば `pg.Layers.Count` でレイヤー数を数えるなど)を試してみてください。

「ここが動かない!」「もっとこうしたい!」という疑問が湧いたら、それはあなたが成長している証拠です。いつでもここに立ち返ってください。共に、CorelDRAWを極めていきましょう!

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