【入門編】【初心者向け】制作物の著作権保護!ドキュメント全体に透かし(ウォーターマーク)文字を自動配置するVBAマクロ – CorelDRAW VBA解析バイブル

スポンサーリンク

こんにちは!CorelDRAW VBAの世界へようこそ。
マクロの記録ボタンを押すだけのステージから抜け出し、自分の手でデザインを自在にコントロールしたいあなたへ。

今回は、実務でめちゃくちゃ重宝する「ドキュメント全体のウォーターマーク(透かし文字)自動配置マクロ」の作り方を解説します。

デザインの校正段階で「CONFIDENTIAL(社外秘)」や「SAMPLE」といった文字を、ページ全体に美しく、かつ勝手に動かないようにロックした状態で配置したい……そんな面倒な作業、一瞬で終わらせたくありませんか?

ここをクリアすれば、CorelDRAW VBAの「オブジェクト生成・変形・レイヤー制御・ロック」の基本がバッチリ身につきますよ。さあ、一緒にプロの第一歩を踏み出しましょう!

なぜ、このマクロが必要なのか?(チーフアーキテクトの視点)

手作業でウォーターマークを作ろうとすると、こうなります。
1. 文字を入力する
2. 50%くらいの透明度(半透明)にする
3. 斜め(例えば45度)に回転させる
4. ページの真ん中に配置する
5. うっかり動かさないようにロックする

これをページ数が何十ページもあるドキュメントや、複数のファイルでやったら発狂しますよね。VBAなら、これらの一連の重労働を「0.1秒」で終わらせることができます。

今回作成するスクリプトの本質は、単に文字を置くだけではありません。「CorelDRAWのキャンバス(ドキュメント)を数学的に把握し、適切な座標と属性を与えて安全に配置する」という、実務自動化の王道パターンです。

全体像:今回作成するVBAコード

まずは、開発環境(VBAエディタ)にそのまま貼り付けて動かせる完全なコードをお見セします。後ほど、一行ずつ優しく解説するので安心してくださいね。

Sub CreateWatermark()
‘ — 1. 環境設定とエラー対策 —
On Error GoTo ErrorHandler

Dim doc As Document
Set doc = ActiveDocument

‘ ドキュメントが開かれていない場合のガード
If doc Is Nothing Then
MsgBox “アクティブなドキュメントがありません。”, vbCritical, “エラー”
Exit Sub
End If

‘ 元に戻す操作(Undo)を1回でまとめるためのトランザクション開始
doc.BeginCommandGroup “ウォーターマーク作成”

‘ — 2. 変数の定義とパラメータ設定 —
Dim watermarkText As String
watermarkText = “SAMPLE – 厳禁 -” ‘ 配置したい透かし文字

Dim sText As Shape
Dim centerX As Double, centerY As Double

‘ アクティブページの中心座標を取得
centerX = doc.Pages.ActivePage.SizeWidth / 2
centerY = doc.Pages.ActivePage.SizeHeight / 2

‘ — 3. テキストシェイプの作成 —
‘ ページの中心にテキストを作成(フォントサイズは72pt、太字)
Set sText = doc.ActiveLayer.CreateArtisticText(centerX, centerY, watermarkText, , , “Arial”, 72, cdrBold, cdrNormal)

‘ — 4. 変形処理(回転と中心合わせ) —
‘ テキストの基準点を中心にしてから回転
sText.CenterX = centerX
sText.CenterY = centerY
sText.Rotate 45 ‘ 45度傾ける

‘ — 5. 見た目の調整(半透明化) —
‘ 透明度を50%に設定(CorelDRAWではTransparencyは0(不透明)から100(完全透明)のスケール)
sText.Transparency = 50

‘ — 6. 誤操作防止のロック処理 —
‘ デザイン中にうっかり選択して動かしてしまわないようロックする
sText.Locked = True

‘ — 7. 終了処理 —
doc.EndCommandGroup
MsgBox “ウォーターマークを正常に配置しました!”, vbInformation, “完了”
Exit Sub

ErrorHandler:
‘ エラー時のクリーンアップ
doc.EndCommandGroup
MsgBox “エラーが発生しました: ” & Err.Description, vbCritical, “予期せぬエラー”
End Sub

コードを分解して理解しよう!初心者が押さえるべき5つのポイント

ここからは、コードの裏側でCorelDRAWがどう動いているのかを紐解いていきます。

① ページの「中心」を数学的に捉える

centerX = doc.Pages.ActivePage.SizeWidth / 2
centerY = doc.Pages.ActivePage.SizeHeight / 2

CorelDRAWの座標系は、デフォルトでは左下を原点(0,0)とするデカルト座標系です。
しかし、人間が「真ん中に置きたい」と思うとき、基準は常にドキュメント(またはページ)の中心ですよね。ここでは、現在のページの「幅(SizeWidth)」と「高さ(SizeHeight)」を2で割ることで、完璧な中心座標を算出しています。

② アートテキストの生成 (`CreateArtisticText`)

Set sText = doc.ActiveLayer.CreateArtisticText(centerX, centerY, watermarkText, , , “Arial”, 72, cdrBold, cdrNormal)

CorelDRAWには「段落テキスト」と「アートテキスト」の2種類がありますが、ウォーターマークのような装飾文字にはアートテキストが最適です。
引数には、座標、文字列、フォント名、サイズ、太字設定などを指定しています。`Set`キーワードを使っているのは、生成されたオブジェクトを変数(`sText`)に代入し、後から操作するためです。オブジェクトを扱うVBAの基本中の基本ですね。

③ 座標の基準と回転 (`Rotate`)

sText.CenterX = centerX
sText.CenterY = centerY
sText.Rotate 45

文字を作成した直後、CorelDRAWはそのテキストの「左下」を基準点として扱いがちです。そのため、一度 `sText.CenterX` と `sText.CenterY` をページの中心に強制的に一致させ、その上で45度傾けています。このひと手間で、文字が綺麗な中心を軸に回転します。

④ 半透明化の魔法 (`Transparency`)

sText.Transparency = 50

CorelDRAW VBAにおいて、透明度の指定は非常にシンプルです。0(完全に透けていない)から100(完全に透明)までの数値を指定します。今回は校正用なので、存在を主張しすぎないよう「50」を指定して半透明にしています。

⑤ プロフェッショナルな仕上げ:ロックとUndo

sText.Locked = True

ここが実務エンジニアのこだわりポイントです。ウォーターマークがマウス操作で動いてしまってはデザインの邪魔になります。`Locked = True` にすることで、CorelDRAW上で選択・移動ができなくなります(オブジェクトマネージャ等からのみ解除可能)。

また、コードの最初と最後にある `BeginCommandGroup` と `EndCommandGroup` は、Ctrl+Z(元に戻す)を押したときに、このマクロで行った一連の処理が「1回の操作」としてきれいに戻るようにするための魔法の呪文です。これがあるとないとで、ツールのプロっぽさが段違いになります。

よくあるエラーと対策

初心者がこのマクロを動かす際、よくつまずくポイントを先回りして解説しておきます。

  • エラー: 「オブジェクト変数または With ブロック変数が見つかりません。」
  • 原因: CorelDRAWを起動しているものの、新しいドキュメント(キャンバス)を開いていない状態でマクロを実行すると発生します。
  • 対策: コード内の `If doc Is Nothing Then` というガード節がこれ防いでくれますが、必ずドキュメントを開いた状態で実行するようにしましょう。
  • 文字化けやフォントエラーが起きる
  • 原因: コード内で指定している `”Arial”` が、お使いの環境やOSによっては厳密に認識されない場合があります。
  • 対策: ご自身の環境に合わせて、`”Meiryo”` や `”MS Gothic”` など、確実に入っている日本語フォント名書き換えてみてください。

まとめ

お疲れ様でした!
今回は、CorelDRAW VBAを使って「ドキュメント全体に半透明のロック付きウォーターマークを配置する」という実用的なプログラムを解説しました。

  • ページのサイズを取得して中心を割り出す方法
  • オブジェクトを生成し、変数に格納して操作する方法
  • 回転、透明度、ロックといったプロパティの操作
  • トランザクション(Begin/EndCommandGroup)による安全なUndo管理

これらはすべて、今後あなたがより高度な自動化ツールを作るときに必ず直面する「コア技術」です。ここをクリアできたあなたなら、もう立派なCorelDRAW自動化エンジニアの仲間入りです。

日々の退屈な作業はマクロに任せて、あなたしか生み出せないクリエイティブなデザインに没頭してくださいね。それでは、次回の応用編でお会いしましょう!

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