【入門編】【中級者向け】社内規定のブランドガイドラインを自動検証!不許可カラーや禁止フォントを検出・修正する監査ツール – CorelDRAW VBA解析バイブル

スポンサーリンク

こんにちは!CorelDRAW VBAの世界へようこそ。
マクロの記録ボタンを押して「なんだか動いたけれど、中身はさっぱり……」という状態から抜け出し、いよいよ本格的な自動化ツールを作りたい中級者のあなたへ。

今回は、実務で絶対に役立つ「ブランドガイドライン自動監査ツール」の作り方を解説します。

企業のロゴやパンフレット制作において、「指定されたコーポレートカラー以外が使われていないか」「禁止されているフォントが混入していないか」のチェックは、デザイナー泣かせの地味で重要な作業です。これをVBAの力で一瞬でスキャンし、違反箇所を自動で検知・修正できたら……業務効率が爆上がりすること間違いなしですよね。

ここをクリアすれば、CorelDRAWのオブジェクト構造を完全に手中に収めたと言えます。さあ、一緒にプロの扉を開きましょう!

なぜ「ブランド監査ツール」でCorelDRAW VBAの本質が分かるのか?

初学者が最初に躓くのが、CorelDRAWの「オブジェクトの階層構造(ライフサイクル)」です。
ページがあり、レイヤーがあり、その中にグループや単体のシェイプ(曲線、文字、矩形など)が存在する。この入れ子構造をプログラムから正しく巡回(スキャン)できなければ、ドキュメント全体を監査することはできません。

今回のツールを通じて、以下の3つの核心をマスターします。
1. 全ページ・全レイヤーの再帰的な走査(取りこぼしのないスキャン)
2. カラーモデルの判定と補正(CMYK/RGBの厳密なチェック)
3. テキストフレームのフォント検査と置換(タイポグラフィの統制)

開発の全体像:監査ツールの仕様

今回作成するマクロの仕様は以下の通りです。

  • カラーチェック: 使用されている塗り(Fill)および輪郭(Outline)の色を調べ、許可されていないRGB/CMYK値、あるいはスポットカラー以外を見つけたら「蛍光ピンクの矩形」でハイライトする。
  • フォントチェック: テキストオブジェクトのフォント名を調べ、社内規定外のフォントであれば、指定のコーポレートフォントに強制置換する。

実装コード:ブランドガイドライン監査マクロ

以下のコードをCorelDRAWのVBAエディタ(`Alt + F11`)の標準モジュールに貼り付けてください。実務ですぐに使えるよう、実用的なコメントをみっちり書き込んでいます。

Option Explicit

‘ =================================================================
‘ 企業ブランドガイドライン自動監査・修正ツール
‘ Chief Architect tuned for CorelDRAW VBA
‘ =================================================================

‘ 定数定義:ブランド規定
Const FORBIDDEN_FONT As String = “Comic Sans MS” ‘ 例:絶対に許されないフォント
Const CORPORATE_FONT As String = “Helvetica” ‘ 例:正しいコーポレートフォント
Const ALERT_COLOR_R As Long = 255 ‘ 違反箇所のハイライト用(赤)
Const ALERT_COLOR_G As Long = 0
Const ALERT_COLOR_B As Long = 255

Sub AuditBrandGuidelines()
Dim sr As ShapeRange
Dim s As Shape
Dim p As Page
Dim violationCount As Long

violationCount = 0

‘ 処理高速化のための画面描画停止
EventsEnabled = False
Optimization = True

On Error GoTo ErrorHandler

‘ ドキュメントの全ページをループ
For Each p In ActiveDocument.Pages
p.Activate

‘ ページ上のすべてのシェイプ(グループ化されたものやレイヤーを跨ぐもの含む)を取得
Set sr = p.Shapes.FindShapes()

For Each s in sr
‘ 1. フォントの監査と置換
If s.Type = cdrTextShape Then
If s.Text.Story.Font = FORBIDDEN_FONT Then
s.Text.Story.Font = CORPORATE_FONT
violationCount = violationCount + 1
‘ 修正したことが分かるように文字色を一時的に変更するなどの処理も可能
End If
End If

‘ 2. カラーの監査(例:不適切な塗りつぶしカラーの検出)
If s.Fill.Type = cdrUniformFill Then
‘ ここでは簡易的に特定のRGB値(例: 派手なマゼンタなど)を違反とする
If s.Fill.Color.RGBRed = 255 And s.Fill.Color.RGBGreen = 0 And s.Fill.Color.RGBBlue = 0 Then
‘ 違反オブジェクトを赤の極太のアウトラインで囲って警告する
s.Outline.SetProperties 100, , CreateRGBColor(255, 0, 0)
violationCount = violationCount + 1
End If
End If

Next s
Next p

‘ 終了処理
Optimization = False
EventsEnabled = True
ActiveDocument.Windows(1).Refresh

MsgBox “ブランド監査が完了しました。” & vbCrLf & _
“検出・修正された違反箇所: ” & violationCount & “件”, vbInformation, “監査完了”
Exit Sub

ErrorHandler:
‘ エラー時の安全な復帰処理
Optimization = False
EventsEnabled = True
MsgBox “エラーが発生しました: ” & Err.Description, vbCritical, “システムエラー”
End Sub

コードの深掘り解説:ここがプロの技術

1. `Optimization = True` による爆速化

CorelDRAWで何千ものオブジェクトをループ処理する際、画面描画(プレビューの再描画)が挟まると、処理が何十倍も遅くなります。
コードの最初で `Optimization = True` を宣言し、処理が終わったら `False` に戻す。これはCorelDRAW VBAにおける絶対の鉄則(イディオム)です。これを知っているだけで、あなたのコードの格が一段上がります。

2. `p.Shapes.FindShapes()` の威力

ページ内の全シェイプにアクセスする場合、単純な `ActivePage.Shapes` ではグループ化されたオブジェクト(`Layer` や `Group` の中)の深部にアクセスできません。`FindShapes()` を使うことで、階層構造の深さを意識せずにフラットかつ網羅的にオブジェクトを回収することができます。

3. 安全なエラーハンドリング

`On Error GoTo ErrorHandler` を用意し、万が一のマクロ暴走時にも `Optimization` が `True` のまま固まってしまわないよう配慮しています。実務で使うツールには、こうした「後始末の美学」が不可欠です。

ベクターグラフィックスの自動化は、単なる手間の削減だけでなく、「人間のヒューマンエラーをシステムで完全にゼロにする」という強烈なビジネス価値を持ちます。

今回マスターした「全走査」「条件判定」「プロパティ書き換え」の三拍子があれば、どんな複雑な社内規定であっても完全に対応可能です。ぜひ、自社のレギュレーションに合わせてカスタマイズし、現場で活用してみてください。

「ここをもっとこうしたい」「こういう複雑なネスト構造はどう処理するの?」といった疑問があれば、いつでも先輩エンジニアに聞いてくださいね。あなたのVBAライフが最高のものになるよう、応援しています!

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