こんにちは!CorelDRAW VBAの世界へようこそ。
「マクロの記録」ボタンを押して図形を描くだけのステップは、もう卒業しましたか?
今回は、現場のワークフローを劇的に効率化する「監視フォルダ自動変換バッチシステム」の作り方を伝授します。
「指定したフォルダにCDRファイルをポンと放り込むだけで、勝手にEPSやSVGに変換され、用途別のフォルダに綺麗に仕分けされていく……」そんな夢のような自動化の仕組みを、CorelDRAW VBAとWindowsの標準機能を組み合わせて実現してみましょう。
ここをクリアすれば、単なる「操作の自動化」から「システム構築」へと視座がグッと上がります。背筋を伸ばして、一緒にプロの領域へ足を踏み入れましょう!
—
1. なぜ「監視&自動変換」なのか?(本質を知る)
実務で大量のCDRファイルを他部署やWeb用に「EPS」や「SVG」へ変換し直す作業、地味に辛いですよね。
CorelDRAWを起動し、ファイルを開き、「名前を付けて保存」からフォーマットを選び……これを100回やったら指が腱鞘炎になってしまいます。
ここで私たちが目指すのは、人間がCorelDRAWの画面を一切触らない裏側の世界です。
バックグラウンドでCorelDRAWのエンジンをサイレントに駆動させ、ファイルIO(入出力)のライフサイクルを完全にコントロールする。この境地に達すると、どんな大量のデータ処理も「コーヒーを淹れている間に終わる作業」に変貌します。
—
2. システムの全体像
今回の自動化は、以下の2段構えで構築します。
1. VBAスクリプト(CorelDRAW側): 渡されたCDRファイルを開き、指定フォーマット(EPS/SVG)で書き出す実務ロジック。
2. VBScript / バッチファイル(Windows側): フォルダ内を監視し、新しいCDRファイルを見つけたらCorelDRAWをサイレント起動して上記VBAに渡すトリガー。
今回は、CorelDRAWのドキュメントを開く・保存する基本作法をマスターしつつ、それを外部からスマートに叩くためのVBAスクリプトに焦点を当てて解説します。
—
3. 実装コード:一括変換・振り分けエンジン
以下のコードを、CorelDRAWのグローバルマクロ(GlobalMacros)または専用のプロジェクトに実装してください。
このコードは、指定されたCDRファイルを読み込み、エラーハンドリングを完璧にこなしながら、SVGとEPSへ同時に書き出して指定フォルダへ振り分けるプロ仕様のエンジンです。
Option Explicit
‘ ==============================================================================
‘ チーフアーキテクトが贈る:CDR自動変換・振り分けメインエンジン
‘ ==============================================================================
Sub AutoConvertAndDistribute(ByVal sourceFilePath As String)
Dim targetDoc As Document
Dim fileName As String
Dim baseName As String
Dim fso As Object
‘ 出力先ディレクトリの定義(実環境に合わせてパスを変更してください)
Const SVG_DIR As String = “C:\AutomatedWork\Output\SVG\”
Const EPS_DIR As String = “C:\AutomatedWork\Output\EPS\”
Const BACKUP_DIR As String = “C:\AutomatedWork\Processed\”
‘ FileSystemObjectの生成(ファイルの存在確認や移動に使用)
Set fso = CreateObject(“Scripting.FileSystemObject”)
‘ ファイルの存在チェック
If Not fso.FileExists(sourceFilePath) Then
MsgBox “指定されたファイルが見つかりません: ” & sourceFilePath, vbCritical, “エラー”
Exit Sub
End If
‘ ファイル名(拡張子なし)の抽出
fileName = fso.GetFileName(sourceFilePath)
baseName = fso.GetBaseName(sourceFilePath)
‘ CorelDRAWの画面描画と警告を抑制(爆速化とバックグラウンド実行のキモ)
EventsEnabled = False
CorelDRAW.Optimization = True
On Error GoTo ErrorHandler
‘ 1. ドキュメントを非表示(あるいは最小限)で開く
‘ OpenDocumentInBackgroundなどがあればベストですが、標準Openの最適化でカバーします
Set targetDoc = Application.OpenDocument(sourceFilePath)
‘ 2. SVG形式でエクスポート
Dim svgFilter As ExportFilter
Set svgFilter = targetDoc.ExportVBA(SVG_DIR & baseName & “.svg”, cdrSVG, cdrSelection, Nothing)
svgFilter.Finish
‘ 3. EPS形式でエクスポート
Dim epsFilter As ExportFilter
Set epsFilter = targetDoc.ExportVBA(EPS_DIR & baseName & “.eps”, cdrEPS, cdrSelection, Nothing)
epsFilter.Finish
‘ 4. ドキュメントを閉じる(変更を保存しない)
targetDoc.Close
‘ 5. 処理済み元ファイルをバックアップフォルダへ移動
fso.MoveFile sourceFilePath, BACKUP_DIR & fileName
GoTo CleanUp
ErrorHandler:
‘ 予期せぬエラーをキャッチし、CorelDRAWがフリーズするのを防ぐ
MsgBox “変換処理中にエラーが発生しました (” & fileName & “): ” & Err.Description, vbCritical, “致命的エラー”
If Not targetDoc Is Nothing Then
targetDoc.Close False ‘ 変更を破棄して閉じる
End If
CleanUp:
‘ 最適化とイベントの復元(絶対に忘れてはいけないライフサイクルの作法)
CorelDRAW.Optimization = False
EventsEnabled = True
Set fso = Nothing
End Sub
—
4. コードの深掘り解説:ここがプロの技術
初学者が陥りやすい罠と、それを回避するための「エンジニアの知見」をいくつか解説します。
① `EventsEnabled = False` と `CorelDRAW.Optimization = True`
これらは、CorelDRAW VBAにおける「ターボエンジン」です。
ファイルをバッチ処理で次々に開閉するとき、画面の再描画(レンダリング)やユーザー操作の検知イベントが走ると、処理が何倍も遅くなります。これをオフにすることで、バックグラウンド処理を極限まで高速化できます。
② `ExportVBA` メソッドの正しい作法
「マクロの記録」を使うと `ActiveDocument.Export` のような冗長なコードが出力されますが、実務では `ExportVBA` を使います。
第3引数のスコープ(`cdrSelection` なのか `cdrAllPages` なのか)や、書き出しフィルターオブジェクトの `.Finish` メソッドを正しく呼び出すことで、メモリリークを防ぎ、安定したファイル生成が可能になります。
③ 堅牢なエラーハンドリング (`On Error GoTo`)
自動化の最大の敵は「壊れたCDRファイル」や「ロックされたファイル」です。
エラーが起きた瞬間にコードが止まってダイアログが画面の真ん中にポツンと出ると、バックグラウンド処理は完全にフリーズします。必ず `On Error GoTo` を仕込み、エラー時でもドキュメントを安全に閉じられるように設計するのがプロの流儀です。
—
5. 運用をさらにスマートにするためのヒント
このVBAマクロを単体で動かすだけでなく、Windowsのタスクスケジューラや、簡単なVBScript(常駐監視スクリプト)と組み合わせることで、「監視フォルダにファイルをドラッグ&ドロップするだけで、勝手に仕分けされる全自動ロボット」が完成します。
フォルダ監視のロジックはVBScriptなどで数行書くだけで実現できますし、CorelDRAWをコマンドライン引数から起動して上記マクロを叩くことも可能です。
コマンドラインからCorelDRAWを起動し、マクロを実行する例
coreldraw.exe /s “AutoConvertAndDistribute” “C:\AutomatedWork\Input\sample.cdr”
—
まとめ:自動化の先にある自由へ
今回は、CorelDRAW VBAを使ったファイルの監視・自動変換・振り分けの裏側を覗いてみました。
- 画面描画を止めて爆速化する (`Optimization`)
- 確実にメモリとリソースを解放する (`Close`, `EventsEnabled`)
- エラーで止まらない堅牢な構造を作る
ここをクリアすれば、もう手作業でのファイル変換に戻れなくなるはずです。あなたのデザインワークフローを解放し、クリエイティブな時間をもっと増やしていきましょう。
それでは、次回の高度なCorelDRAWプログラミングでお会いしましょう!
