こんにちは!CorelDRAW VBAの世界へようこそ。
マクロの記録ボタンを押して「なんだかよく分からないけれど動いたぞ」という段階から、一歩抜け出したい時期ですね。
デザインの現場では、印刷入稿や他のソフト(IllustratorやPhotoshopなど)との連携で「EPS形式」での書き出しを大量に求められる場面がよくあります。これを1つずつ手作業で「ファイル」>「エクスポート」……とやっていたら、残業が確定してしまいますよね。
今回は、選択した複数のオブジェクトやページ内の要素を、ダイアログを出さずにバシッと一括でEPSフォーマットに書き出す、実用的なマクロの作り方を解説します。
ここをクリアすれば、CorelDRAW VBAの基本構造やファイル出力の仕組みがスッキリ見えてきますよ。さあ、一緒に基本をマスターしていきましょう!
—
1. なぜ「マクロの記録」だけでは実務で使えないのか?
CorelDRAWには「マクロの記録」機能がありますが、これを使って書き出しを行うと、以下のような壁にぶつかります。
- 毎回「名前を付けて保存」のダイアログがポップアップして止まる
- ファイル名が固定されてしまい、上書きされて消えてしまう
- コードが冗長で、どこを直せばいいか分からない
プログラミングの醍醐味は「機械的な単純作業を、人間が画面を見ている間に終わらせること」です。ダイアログを出さずに、コードの命令だけで一瞬ファイルを作り出す「サイレント・エクスポート」の技術をここで手に入れましょう。
—
2. 実用マクロ:一括EPS書き出しコード
まずは、そのままコピペして使える完全版のコードをお見せします。
CorelDRAWのVBAエディタ(`Alt + F11`)を開き、標準モジュールに貼り付けてみてください。
Sub ExportSelectedObjectsToEPS()
Dim Srn As ShapeRange
Dim Sh As Shape
Dim ExportPath As String
Dim FileName As String
Dim Counter As Long
‘ 1. エクスポート先のフォルダパスを指定(※環境に合わせて変更してください)
ExportPath = “C:\CorelExport\”
‘ フォルダが存在するか簡易チェック(実務ではDir関数等でバリデーションすると完璧です)
If Dir(ExportPath, vbDirectory) = “” Then
MsgBox “指定されたフォルダが存在しません: ” & ExportPath, vbCritical, “エラー”
Exit Sub
End
‘ 2. 現在ドキュメント上で選択しているオブジェクトを取得
Set Srn = ActiveSelectionRange
‘ 何も選択されていない場合は処理を中断
If Srn.Count = 0 Then
MsgBox “書き出すオブジェクトが選択されていません。”, vbExclamation, “注意”
Exit Sub
End If
‘ 3. カウンターを初期化
Counter = 0
‘ 4. 選択されたオブジェクトをひとつずつループ処理
For Each Sh In Srn
Counter = Counter + 1
‘ ファイル名の組み立て(例: object_1.eps, object_2.eps …)
FileName = ExportPath & “object_” & Counter & “.eps”
‘ 5. EPS形式でエクスポート実行
‘ structExportOptions を使わず、ドキュメントのピンポイントメソッドで高速出力
Dim ExpFilter As ExportFilter
Set ExpFilter = ActiveDocument.ExportEx(FileName, cdrEPS, cdrSelection)
‘ エクスポートのパラメータ設定(必要に応じて解像度やバージョンを調整可能)
With ExpFilter
.ShowDialog = False ‘ ★ダイアログを出さない最重要設定!
.Finish
End With
Next Sh
‘ 6. 完了メッセージ
MsgBox Counter & “個のオブジェクトをEPS形式で書き出しました!”, vbInformation, “処理完了”
End Sub
—
3. コードの急所を解説!初心者が押さえるべき3つのポイント
このコードには、CorelDRAW VBAを使いこなすためのエッセンスがぎっしり詰まっています。特に重要な3つのポイントを紐解いていきましょう。
① `ActiveSelectionRange` で「いま選んでいるもの」を捕まえる
CorelDRAWでデザインを選択した状態は、VBAの世界では `ActiveSelectionRange` という「オブジェクトの束(コレクション)」として表現されます。
これを `For Each` というループ文で回すことで、「1番目のオブジェクト」「2番目のオブジェクト」と順番に料理していくことができます。
② `cdrSelection` の指定がミソ
エクスポートを行うメソッド `ActiveDocument.ExportEx` では、何を書き出すかを引数で指定します。
- `cdrEPS` → ファイル形式がEPSであることを指定
- `cdrSelection` → 「ドキュメント全体ではなく、いま選択しているものだけ」を対象にする指定
これがあるおかげで、不要な背景や他のデザインを巻き込まず、選んだパーツだけを個別に切り出すことができます。
③ `.ShowDialog = False` で完全自動化を実現
ここが今回の最大の肝です。
`ExportEx` を実行しただけでは、CorelDRAWは親切心(あるいは仕様)から「どこに保存しますか?」とダイアログを出して止まってしまいます。
しかし、返ってきた `ExportFilter` オブジェクトに対して `.ShowDialog = False` を明示的に設定し、最後に `.Finish` を呼び出すことで、人間の手を一切借りずに裏側で高速にファイルを生成し続けることができるのです。
—
4. 現場でよくある「つまずきポイント」と解決策
初心者のうちは、ちょっとした環境の違いでエラーが出ることもあります。よくあるトラブルを先回りして解決しておきましょう。
- エラー「パスが見つかりません」と言われる
- コード内の `ExportPath = “C:\CorelExport\”` のフォルダが、あなたのPCのCドライブ直下に本当に存在するか確認してください。存在しない場合は、あらかじめフォルダを作っておくか、デスクトップのパスなどに書き換えてください。
- 書き出したEPSが開けない・真っ白になる
- 選択しているオブジェクトが「グループ化されたまま」だったり、意図しないレイヤー構造になっていないか確認しましょう。また、テキストオブジェクトが含まれている場合は、事前に「曲線に変換(パス化)」しておくと、別環境で開いたときのフォント化けを防げます。
—
おわりに:ここから広がる自動化の世界
お疲れ様でした!このマクロをモノにすれば、バラバラのパーツを何十個もEPSへ書き出す作業から解放されます。
「でも、ファイル名をオブジェクトの名前にしたいな」
「EPSだけでなく、同時にPDFやPNGも作れたら最高なのに」
そんな欲が出てきたら、あなたはもう立派なVBAエンジニアの卵です。CorelDRAW VBAは、知れば知るほどデザイン現場の頼れる相棒になってくれます。
ぜひ今回のコードをベースに、あなたのワークスタイルに合わせたカスタムに挑戦してみてくださいね。それでは、快適な自動化ライフを!
