【入門編】【中級者向け】複数フォーマット(EPS・PDF・SVG・CDR)のエクスポート設定をUIフォームから選択し、一括で多重出力するカスタムダイアログの構築 – CorelDRAW VBA解析バイブル

スポンサーリンク

こんにちは、CorelDRAWオートメーションの世界へようこそ。

マクロの記録を卒業し、「自分専用のツール」を作りたいと思い始めたあなたの情熱、素晴らしいですね。私はこれまで数え切れないほどのワークフローを自動化してきましたが、CorelDRAW VBAにおいて、最も「自動化の恩恵」を実感できるのが、今回挑戦する『多重フォーマット一括エクスポート』です。

印刷用のPDF、Web用のSVG、素材用のEPS……。これらを一つずつ手動で書き出す作業は、クリエイティブな時間ではありません。これをボタン一つで終わらせる「魔法のツール」を、一緒に構築していきましょう。

ここをクリアすれば、CorelDRAW VBAの基本はバッチリですよ。

1. ユーザーフォーム:対話型ツールの「顔」を作る

まずは、エクスポートしたい形式を選択する画面(UserForm)を作りましょう。

手順:

1. CorelDRAWで `Alt + F11` を押し、VBAエディタを開きます。
2. メニューの「挿入」から「ユーザーフォーム」を選択。
3. ツールボックスから以下のコントロールを配置します。

  • CheckBox1〜4: それぞれ「EPS」「PDF」「SVG」「CDR(保存)」用。
  • CommandButton1: 「一括エクスポート実行」ボタン。

ヒント: オブジェクト名((Name)プロパティ)を `chkEPS` や `btnExport` のように分かりやすく書き換えておくと、コードを書くときに迷わなくなりますよ。

2. 実装コード:エンジニアの魂を込めたエクスポートロジック

それでは、UserFormのボタンをダブルクリックして、コードを記述しましょう。
このコードは、ただ書き出すだけでなく、「ドキュメントの状態を壊さない」というプロの配慮を盛り込んでいます。

‘ — UserFormのコードセクション —

Private Sub btnExport_Click()
Dim doc As Document
Set doc = ActiveDocument

‘ ドキュメントが開いているかチェック
If doc Is Nothing Then
MsgBox “ドキュメントが開かれていません。”, vbExclamation
Exit Sub
End If

‘ 保存先のパスを取得(現在のファイルと同じフォルダ)
Dim filePath As String
Dim fileName As String
Dim fullPath As String

If doc.FilePath = “” Then
MsgBox “一度ファイルを保存してから実行してください。”, vbCritical
Exit Sub
End If

filePath = doc.FilePath
‘ 拡張子を除いたファイル名を取得
fileName = Left(doc.FileName, InStrRev(doc.FileName, “.”) – 1)

‘ 描画の高速化(画面更新を停止)
Optimization = True
EventsEnabled = False

On Error GoTo ErrorHandler

‘ — EPS エクスポート —
If chkEPS.Value = True Then
Dim expFilter As ExportFilter
Dim expOptions As New StructExportOptions

‘ EPSの設定
expOptions.ImageType = cdrRGBColorImage ‘ 必要に応じてCMYKに変更
Set expFilter = doc.ExportEx(filePath & fileName & “.eps”, cdrEPS, cdrCurrentPage, expOptions)
expFilter.Finish
End If

‘ — PDF エクスポート —
If chkPDF.Value = True Then
‘ PDFは専用の設定オブジェクトを使用するのがプロの定石
Dim pdfSettings As New StructPDFSettings
With pdfSettings
.PublishRange = pdfWholeDocument
.ColorMode = pdfCMYK
.PdfVersion = pdfVersion17
End With
doc.PublishToPDF filePath & fileName & “.pdf”, pdfSettings
End If

‘ — SVG エクスポート —
If chkSVG.Value = True Then
Dim svgOptions As New StructExportOptions
‘ SVG特有のオプションが必要な場合はここで設定
doc.Export filePath & fileName & “.svg”, cdrSVG, cdrCurrentPage
End If

‘ — CDR 保存 (コピーとして保存) —
If chkCDR.Value = True Then
‘ SaveAsは現在開いているファイル自体を変えてしまうため、CopyAssignで別名保存が安全
doc.SaveAs filePath & fileName & “_backup.cdr”
End If

‘ 終了処理
Optimization = False
EventsEnabled = True
MsgBox “すべて完了しました!”, vbInformation
Unload Me
Exit Sub

ErrorHandler:
Optimization = False
EventsEnabled = True
MsgBox “エラーが発生しました: ” & Err.Description, vbCritical
End Sub

3. 知っておきたい「プロの視点」:コードの解説

① `Optimization = True` の魔法

CorelDRAW VBAで最も重要な設定の一つです。これを `True` にすると、マクロ実行中の画面描画が一時停止されます。ユーザーの目には一瞬で終わったように見え、処理速度も劇的に向上します。最後に必ず `False` に戻すのを忘れないでくださいね。

② `Export` と `ExportEx` の違い

初心者の方は `Export` を使いがちですが、中級者を目指すなら `ExportEx` を意識しましょう。

  • `Export`: シンプルな出力。
  • `ExportEx`: `StructExportOptions` を使うことで、解像度やカラーモードを詳細にコントロールできます。

③ なぜ `On Error` を入れるのか?

エクスポート中、ファイルが別のソフトで開かれていたり、書き込み権限がなかったりするとマクロは止まってしまいます。`ErrorHandler` を用意しておくことで、ツールが「落ちる」のを防ぎ、安全に画面更新(Optimization)を再開させることができます。

4. 陥りやすいエラーと対策

1. ファイル名にドットが含まれる場合
`InStrRev` で拡張子を探していますが、ファイル名自体にドットが多いと誤作動することがあります。実務では `FileSystemObject` を使うのがより堅牢ですが、まずはこの基本形をマスターしましょう。

2. 単位系のトラップ
SVGやPDFのサイズ指定をする際、CorelDRAWの現在の単位(ミリ、インチなど)が影響することがあります。確実な処理をするなら、コードの冒頭で `doc.Unit = cdrMillimeter` と宣言するのが定石です。

最後に:一歩先へ進むあなたへ

お疲れ様でした!これで、「ただ描くだけ」のツールだったCorelDRAWが、あなたの命令に従って働く「自動生産ライン」へと進化しました。

このマクロが動いた瞬間、あなたは単なるオペレーターではなく、「仕組みを作るエンジニア」への第一歩を踏み出したことになります。次は、エクスポートする解像度をUIから入力できるようにしたり、選択しているオブジェクトだけを書き出す機能を追加したりして、自分色に染めてみてください。

もし途中でつまずいても大丈夫。VBAはあなたの試行錯誤に必ず応えてくれます。また分からないことがあれば、いつでも聞きに来てくださいね。

ハッピー・オートメーション!

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