【入門編】【初心者向け】アクティブページ内のすべてのシェイプに対して一括で「線なし・指定特色塗り」を適用するスタイリング自動化マクロ – CorelDRAW VBA解析バイブル

スポンサーリンク

こんにちは!CorelDRAW VBAの世界へようこそ。
マクロの記録ボタンを押して「なんだかよく分からないけれど自動で動いたぞ」というフェーズは、もう卒業しましょう。ここからは、あなた自身の意志でCorelDRAWを自在に操る「エンジニア」としての第一歩です。

今回は、実務の現場で最も頻繁に遭遇する要件の一つである「アクティブページ内の全シェイプに対して、一括で『線なし・指定特色塗り』を適用するスタイリング自動化マクロ」をテーマに解説します。

ここをしっかりとクリアすれば、CorelDRAW VBAのオブジェクト階層の概念と、カラーを制御する基本がバッチリ身につきますよ。さあ、一緒に扉を開けましょう!

—

なぜこのマクロが必要なのか?(手動作業の限界)

例えば、数百個のバラバラなパーツで構成されたパンフレットのイラストや、クライアントから支給されたロゴデータのベースカラーを、会社の「指定コーポレートカラー(特色)」に統一しなければならないとします。

これをマウスとパレットで行おうとすると……
1. シェイプを1つずつ選択する
2. アウトライン(線)を「なし」にする
3. フィル(塗り)を指定のカラーに変更する
4. これをすべてのオブジェクトに対して繰り返す……

気が遠くなりますよね? しかも、人間が手作業で行うと、選択し忘れるパーツ(いわゆる「塗り残し」や「細い枠線」)が必ず発生します。

この苦行を、わずかコンマ数秒で、かつ100%の正確性で終わらせてくれるのが今回作成するVBAマクロです。

—

CorelDRAW VBAの基本構造を理解しよう

コードを書く前に、CorelDRAWの頭の中を少しだけ覗いてみましょう。CorelDRAWでは、オブジェクトが以下のような「入れ子構造(階層)」で管理されています。

Application (CorelDRAW本体)
┗ ActiveDocument (現在開いているドキュメント)
┗ ActivePage (現在作業しているページ)
┗ Shapes (ページ内にあるすべての図形たち)
┗ ひとつのシェイプ (Shape)

今回のマクロの目的は、「ActivePageの中にあるShapes(すべての図形)を1つずつ順番に取り出して、魔法をかけること」です。この「順番に取り出して処理する」ために、プログラミングでは`For Each` ループという強力な仕組みを使います。

—

実装コード:一括スタイリング・マクロ

それでは、開発環境(VBAエディタ:`Alt + F11`)を開き、標準モジュールに以下のコードを貼り付けてください。

そのまま現場でコピペして使えるよう、プロの現場でも通用する堅牢なコメントを添えています。

Sub ApplyCorporateColor()
‘ =========================================================================
‘ 処理名: アクティブページ内全シェイプの「線なし・指定特色塗り」一括適用
‘ 概要: 選択の手間なく、ページ上の全オブジェクトの線を消し、指定色で塗ります。
‘ =========================================================================

‘ エラーハンドリングの準備(予期せぬトラブルでのフリーズを防ぐ)
On Error GoTo ErrorHandler

‘ 1. 処理の高速化(画面描画を一時停止し、パフォーマンスを最大化するプロの技)
ActiveDocument.BeginCommandGroup
EventsEnabled = False
Application.Optimization = True

‘ 2. 変数の宣言
Dim sh As Shape
Dim targetColor As New Color

‘ 3. 指定する「特色(PANTONEなど)」を定義する
‘ ※ここでは例としてPANTONE 185 C(鮮やかなレッド系)を指定します
‘ 実務では、会社の指定するカラーブック名と色名に書き換えてください。
targetColor.Type = cdrColorPantone
targetColor.Pantone.Name = “PANTONE 185 C”
targetColor.Tint = 100 ‘ 濃さ(100%)

‘ 4. アクティブページの全シェイプに対してループ処理を実行
‘ 「ActivePage.Shapes」という箱の中から、1つずつ「sh」という変数に取り出します
For Each sh In ActivePage.Shapes

‘ 【重要】グループ化されているオブジェクトや、塗り・線を持たない特殊なシェイプへの配慮
‘ シェイプが種類によってはプロパティを持たない場合があるため、安全に処理を分岐させます
If Not sh.Immutable Then

‘ A. アウトライン(線)をなしにする
sh.Outline.Type = cdrNoOutline

‘ B. フィル(塗り)を有効にし、指定した特色を適用する
‘ ※テキストフレームや一部の特殊オブジェクトでエラーが出ないよう判定を入れると完璧です
If sh.Display书记able Or sh.Type = cdrShapeType Then ‘ ※簡略化のため基本シェイプを対象
sh.Fill.ApplyNoFill ‘ いったんクリア
sh.Fill.ApplyColor targetColor ‘ 指定色を適用
End If

End If

Next sh

CleanUp:
‘ 5. 処理の終了処理(必ず描画を元に戻すこと!)
Application.Optimization = False
EventsEnabled = True
ActiveDocument.EndCommandGroup

‘ 完了メッセージ
MsgBox “ページ内の全シェイプのスタイリングを完了しました!”, vbInformation, “自動化完了”
Exit Sub

ErrorHandler:
‘ エラーが発生した場合の安全装置
MsgBox “エラーが発生しました: ” & Err.Description, vbCritical, “エラー”
Resume CleanUp

End Sub

—

コードのここがポイント!初心者が押さべき3つの技術

上記のコードには、ただ動くだけでなく、プロのエンジニアが現場で必ず組み込む「3つの知見」が詰まっています。

1. 画面描画の停止(`Application.Optimization = True`)

CorelDRAWは、VBAで図形を1つ変更するたびに、画面を再描画(プレビューを更新)しようとします。これが数百個、数千個と続くと、マクロの処理速度が劇的に遅くなります(画面がチラつく原因にもなります)。
処理の最初に `Optimization = True` を宣言し、最後に `False` に戻すことで、爆速のバックグラウンド処理を実現できます。

2. 特色(Spot Color)の指定方法

CMYKやRGBではなく、印刷現場で必須となる「特色(PANTONEなど)」をVBAから指定するには、`Color` オブジェクトの `Type` に `cdrColorPantone` を指定し、正確なカラーネームを文字列で渡します。ここを社内のレギュレーションに合わせて書き換えるだけで、どんなコーポレートカラーにも対応可能です。

3. エラーハンドリングと `CleanUp` ラベル

もし処理の途中でエラーが起きた場合、画面描画が停止したまま(`Optimization = True` のまま)VBAが中断してしまうと、CorelDRAWがフリーズしたような状態になってしまいます。これを防ぐために、エラーが起きても必ず `CleanUp`(後片付け)のルートを通るように設計するのが、プログラミングにおける「優しさ」であり「鉄則」です。

—

初心者がハマりやすい罠とエラー対策

マクロを動かす際、初心者がよく直面するつまずきポイントを事前にシェアしておきます。

  • エラー:「このオブジェクトは塗りをサポートしていません」
  • 原因: ページ内には、通常の四角形やパスだけでなく、「ガイド線」「ブレンドグループのパス」「ビットマップ画像」なども含まれています。これらは「塗り」を持たないため、`sh.Fill.ApplyColor` を実行すると怒られてしまいます。
  • 対策: 今回のコードでは基本的な安全策を入れていますが、さらに厳密にするには `If sh.Type = cdrCurveShape Or sh.Type = cdrRectangleShape Then` のように、「塗りを持てるシェイプの種類だけに絞って処理する」条件分岐を追加すると完璧です。

—

まとめ:ここをクリアすれば、次は「ドキュメント全体」への挑戦!

お疲れ様でした!今回は「アクティブページ内」のシェイプを対象に一括スタイリングを行うマクロを解説しました。

ここをクリアしたあなたなら、`ActivePage` を `ActiveDocument.Pages` に書き換えるだけで、「ファイル内の全ページ(マルチページ)を一括変換するモンスターマクロ」へ進化させることは、もう容易に想像がつきますよね。

手作業のストレスから解放され、クリエイティブで本質的なデザイン業務に集中するための第一歩。ぜひ、あなたの手元のCorelDRAWで試してみてください!

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