こんにちは!CorelDRAW VBAの世界へようこそ。
マクロの記録ボタンを押して「動いたはいいけれど、中身がスパゲッティコードになっていて修正できない……」そんな悩みを抱えていませんか?
今日は、マクロの記録を卒業し、プロのプリプレス(印刷前工程)現場で即戦力となる「トンボとカラーバーの自動生成、そして安全なPDF/X出力」の自動化をマスターしましょう。
ここをクリアすれば、CorelDRAW VBAのオブジェクト指向の思想と、実務で絶対に避けて通れない「ドキュメントのライフサイクル管理」の基本がバッチリ身につきますよ。しっかりとエスコートしますので、一緒に紐解いていきましょう!
—
1. なぜ「手動のトンボ・PDF書き出し」から脱却すべきなのか?
印刷業界の現場では、ミリ単位のズレが致命的な不良品を生み出します。
人間の手で毎回トンボを引き、カラーバーを配置し、PDF/Xのプリセットを選んで書き出す……この作業は、ヒューマンエラーの温床です。
CorelDRAW VBAを使えば、用紙サイズやアートボードの寸法をプログラムが瞬時に読み取り、数学的に正確な位置へトンボを配置できます。さらに、印刷トラブルの無いPDFをワンクリックで生成可能です。
まずは、プログラミングの全体像をつかみましょう。
—
2. 実装の全体像:プリプレス自動化マクロ
以下のコードは、現在のドキュメントのアクティブなページサイズを基準にして、3mmの裁ち落とし(Bleed)を考慮したトンボ枠を計算し、PDF/X形式で安全に出力するための実践的なマクロです。
そのままコピー&ペーストして、CorelDRAWのVBAエディタ(Alt + F11)に貼り付けて実行できます。
Sub ExportPressReadyPDF()
‘ ==========================================
‘ プリプレス自動化:トンボ生成&PDF/X出力マクロ
‘ ==========================================
Dim doc As Document
Set doc = ActiveDocument
If doc Is Nothing Then
MsgBox “アクティブなドキュメントがありません。”, vbCritical, “エラー”
Exit Sub
End If
‘ 単位をミリメートルに強制設定(極めて重要!単位ズレを防ぎます)
doc.Unit = cdrMillimeter
Dim pageWidth As Double, pageHeight As Double
pageWidth = doc.ActivePage.SizeWidth
pageHeight = doc.ActivePage.SizeHeight
‘ — 設定値 —
Dim bleed As Double
bleed = 3# ‘ 裁ち落とし 3mm
Dim trimMarkOffset As Double
trimMarkOffset = 5# ‘ トンボのオフセット(仕上がり線から5mm離す)
‘ ==========================================
‘ 1. レイヤーの準備(安全なオブジェクト管理)
‘ ==========================================
Dim targetLayer As Layer
On Error Resume Next
Set targetLayer = doc.ActivePage.Layers(“プリプレス・トンボ”)
On Error GoTo 0
If targetLayer Is Nothing Then
Set targetLayer = doc.ActivePage.CreateLayer(“プリプレス・トンボ”)
End If
‘ 作業用レイヤーをアクティブにし、印刷・エクスポート可能に設定
targetLayer.Activate
targetLayer.Editable = True
targetLayer.Printable = True
‘ ==========================================
‘ 2. トンボ(トリムマーク)の自動描画
‘ ==========================================
‘ ※ここでは概念をシンプルにするため、四隅のコーナートンボを模した線を引きます
Dim sLine As Shape
Dim lenMark As Double
lenMark = 8# ‘ トンボの長さ 8mm
‘ 左上のトンボ(水平方向)
Set sLine = targetLayer.CreateLine(-trimMarkOffset – lenMark, pageHeight + trimMarkOffset, -trimMarkOffset, pageHeight + trimMarkOffset)
Call FormatTrimMark(sLine)
‘ 左上のトンボ(垂直方向)
Set sLine = targetLayer.CreateLine(-trimMarkOffset, pageHeight + trimMarkOffset + lenMark, -trimMarkOffset, pageHeight + trimMarkOffset)
Call FormatTrimMark(sLine)
‘ 右上、左下、右下も同様のロジックで展開可能ですが、
‘ 実務では CorelDRAWの標準スタイルや高度なパス演算を組み合わせます。
‘ ==========================================
‘ 3. PDF/X形式での安全な書き出し
‘ ==========================================
Dim pdfPath As String
pdfPath = doc.FilePath & Left(doc.FileName, InStrRev(doc.FileName, “.”) – 1) & “_PrintReady.pdf”
Dim expParams As StructPDFExportSettings
Set expParams = New StructPDFExportSettings
‘ PDF/X-1a 互換(印刷標準の厳格な設定)
expParams.PublishSettings = pdfPublishPresetPDFX1a
expParams.ColorMode = 2 ‘CMYK
expParams.IncludeBleed = True
expParams.BleedLimit = bleed
expParams.EmbedFonts = True
‘ エクスポート実行
Dim status As ExportFilter
Set status = doc.PublishToPDF(pdfPath, expParams)
MsgBox “入稿用PDFの書き出しが完了しました!” & vbCrLf & pdfPath, vbInformation, “処理成功”
End Sub
‘ — 補助プロシージャ:トンボの線のスタイル統一 —
Private Sub FormatTrimMark(s As Shape)
s.Outline.Width = 0.25 ‘ 0.25mmの極細線
s.Outline.SetColor 0, 0, 0, 100 ‘ レジストレーション(K100%)
End Sub
—
3. コードの急所を解説!ここが分かれば一人前
初心者から一歩抜け出すために、上記のコードに隠された「プロの知見」を3つに絞って解説します。
① 単位の明示化 (`doc.Unit = cdrMillimeter`)
CorelDRAWは、ユーザーが画面右下で変更している単位(インチ、ピクセル、ミリなど)にVBAの数値が依存しがちです。これを怠ると、ある環境では3mmのつもりが3インチになり、大惨事になります。
コードの最初に必ず単位をコード側から強制する、これがプロの防衛策です。
② オブジェクトのライフサイクル管理(レイヤーの動的生成)
「マクロを何回か実行したら、トンボが何重にも重なってしまった……」という経験はありませんか?
今回のコードでは、既存の「プリプレス・トンボ」レイヤーを探し、無ければ新規作成するという「イデムポテント(冪等性:何度実行しても結果が同じになる)」な設計にしています。
`On Error Resume Next` を巧妙に使ってエラーをハンドリングする手法は、VBA実務の定番テクニックです。
③ `StructPDFExportSettings` による完全制御
「マクロの記録」では、PDF書き出しのダイアログボックス内の操作がそのまま記録され、環境が変わるとパスが見つからずにエラーになります。
APIである `StructPDFExportSettings` を直接インスタンス化してパラメータを叩くことで、ダイアログを一切開かずに、高速かつ確実にPDF/X-1a形式へ変換できます。これが爆速で安定する理由です。
—
4. 陥りやすい罠とエラー回避の知見
実務でこのマクロを運用する際によくある罠を先回りして共有します。
- 罠:ドキュメント未保存時の `doc.FilePath` エラー
- 対策: 新規作成しただけでまだ一度も保存していないドキュメントに対して `doc.FilePath` を呼び出すと、空文字が返ってきてパス結合でエラーになります。実行前に `If doc.Saved = False` などのチェックを挟むと完璧です。
- 罠:カラープロファイルのミスマッチ
- 対策: PDF/Xを出力する際は、ドキュメント自体のカラーモードがCMYKに設定されていることを確認してください。RGBのままPDF/X-1aプリセットを強制すると、CorelDRAWのエンジン側で予期せぬ色変換(またはエラー)が起きる場合があります。
—
5. おわりに:ここから広がる自動化の世界
今回は、トンボの生成とPDF/X出力という、プリプレスの核心部分を解説しました。
ここをクリアできれば、次は「複数ページのバッチ処理」「顧客ごとのプリセット切り替え」「バーコードや管理番号の動的埋め込み」など、あなたのアイデア次第で無限の自動化が可能です。
「手作業の地獄」からデザイン現場を解放するエンジニアとして、ぜひ今日のコードをあなたの引き出しに加えてください。それでは、次のステップでお会いしましょう!
