【入門編】【初心者向け】アートボード上の選択シェイプのみをPNG画像として切り出し保存する自動化手法 – CorelDRAW VBA解析バイブル

スポンサーリンク

こんにちは!CorelDRAWの自動化の世界へようこそ。
マクロの記録ボタンを押して「なんだか動いたけれど、中身がよくわからない……」と悩んでいませんか?

大丈夫です。今日は、プログラミング初学者の方でも一目でわかるように、そして将来シニアエンジニアになっても役立つ「本質」を押さえながら、「選択したシェイプだけを高解像度PNGとして切り出す実用マクロ」の作り方を優しく徹底解説します。

ここをクリアすれば、CorelDRAW VBAの基本はバッチリですよ。さあ、一緒に扉を開けましょう!

なぜ「選択範囲のPNG書き出し」でVBAの基本がすべて学べるのか?

CorelDRAWでデザイン業務をしていると、「このアイコンだけ」「このイラストだけ」を切り出してクライアントに納品したり、Web用に書き出したりする作業が頻繁に発生します。

これを手動でやると、
1. 新規ドキュメントを作る
2. オブジェクトをコピペする
3. 余白を調整する
4. 「ファイル」>「エクスポート」からPNGを選ぶ
5. 解像度を設定して保存……

という退屈な地獄のルーティンワークになります。しかも、数が多いと発狂しそうになりますよね。

今回作成するVBAマクロは、「アートボード上でマウスで選んだシェイプ(Selection)」を瞬時に認識し、その周囲(バウンディングボックス)ピッタリのサイズで、美しい高解像度PNGとして保存してくれる魔法のプログラムです。

このマクロには、CorelDRAW VBAを操る上で絶対に避けて通れない以下の「3大重要概念」がすべて詰まっています。

  • オブジェクトの選択状態(`ActiveSelection`)の掴み方
  • 座標とサイズ(バウンディングボックス)の概念
  • エクスポート(`ExportBitmap`)の正しい作法

現場でそのまま使える!最強の切り出しマクロ

まずは、何も言わずに以下のコードをCorelDRAWのVBAエディタ([Alt] + [F11])に貼り付けてみてください。

Sub ExportSelectedShapeAsPNG()
‘ =========================================================================
‘ 処理名: 選択シェイプを高解像度PNGとして切り出し保存するマクロ
‘ 概要: 現在選択されているオブジェクトの境界を自動計算し、
‘ デスクトップに「SelectedImage.png」として書き出します。
‘ =========================================================================

‘ エラーハンドラーの準備(トラブル時にフリーズするのを防ぐプロの技)
On Error GoTo ErrorHandler

‘ 1. 何も選択されていない場合のガード節(初心者が一番ハマる罠を防ぐ)
If ActiveSelection.Shapes.Count = 0 Then
MsgBox “エラー: PNGに書き出すシェイプが選択されていません。”, vbCritical, “選択エラー”
Exit Sub
End If

‘ 2. 保存先パスの指定(ここでは分かりやすくデスクトップに固定)
Dim exportPath As String
exportPath = CreateObject(“WScript.Shell”).SpecialFolders(“Desktop”) & “\SelectedImage.png”

‘ 3. エクスポートフィルターの準備と実行
‘ 注: CorelDRAWでは、エクスポート範囲を「選択範囲のみ(cdrSelection)」に指定するのが鉄則です
Dim expFilter As ExportFilter
Set expFilter = ActiveDocument.ExportBitmap(exportPath, cdrPNG, cdrSelection, cdrCurrentPalette, 300, 300, 96, 96, cdrNoAntiAliasing, False, True, True, False, cdrCompressionNormal)

‘ 4. エクスポートを実行してファイルを確定させる
expFilter.Finish

‘ 5. 成功メッセージ
MsgBox “切り出しが完了しました!” & vbCrLf & “保存先: ” & exportPath, vbInformation, “完了”

Exit Sub

ErrorHandler:
‘ 万が一エラーが起きた場合の優しいうけたて
MsgBox “予期せぬエラーが発生しました: ” & Err.Description, vbCritical, “システムエラー”
End Sub

コードの急所を徹底解説!「ここが分かれば怖くない」

このコードがなぜ美しく動くのか、初心者の方がつまずきやすいポイントを絞って解剖していきましょう。

1. 「何も選択されていない」を検知するガード節

If ActiveSelection.Shapes.Count = 0 Then
MsgBox “…”, vbCritical
Exit Sub
End If

プログラミング初心者のコードによくあるのが、「選択していない状態でマクロを実行して、謎のエラーで強制終了する」という悲劇です。
`ActiveSelection.Shapes.Count`(選択されているシェイプの数)が「0」だったら、処理を即座にストップする(これをガード節と呼びます)ことで、頑健なマクロになります。

2. デスクトップのパスを自動取得するスマートな技

exportPath = CreateObject(“WScript.Shell”).SpecialFolders(“Desktop”) & “\SelectedImage.png”

Windowsのユーザー名(`C:\Users\Yamada\…`など)は人によって異なります。硬直したパスを書き込むと、他のパソコンで動かした時に必ず破綻します。
VBAからWindowsのシステム環境(WScript.Shell)を呼び出すことで、「誰のPCで実行しても必ずデスクトップに保存される」という神仕様を実現しています。

3. CorelDRAW最強の秘技 `ExportBitmap`

Set expFilter = ActiveDocument.ExportBitmap(…)

ここがCorelDRAW VBAの真骨頂です。
引数が非常に多いですが、特に重要なポイントをピックアップします。

  • `exportPath`: 保存先のフルパス
  • `cdrPNG`: ファイル形式をPNGに指定
  • `cdrSelection`: 【超重要】 ドキュメント全体ではなく、「現在選択しているオブジェクトの領域だけ」を切り出す指定です。これがあるからこそ、今回の目的が達成できます。
  • `300, 300, 96, 96`: 解像度(DPI)の設定です。ここでは印刷にも耐える300DPIの高解像度を指定しています。

最後の `.Finish` を呼ぶことで、初めてファイルがストレージに書き出されます。この「フィルターオブジェクトを作ってからFinishする」という一連の流れは、CorelDRAW特有の作法なので覚えておきましょう。

初心者が必ずハマる「3大トラップ」と回避策

最後に、現場で開発しているときによく直面するトラブルと、その対策をシェアします。

トラップ①:グループ化していない複数シェイプを選ぶとバラバラになる?

> 現象: 複数のオブジェクトを選択して実行すると、なぜか意図しない範囲が書き出される。
> 対策: CorelDRAWの `ActiveSelection` は、選択された個々のバウンディングボックスの全体を包む外枠を基準にします。もし完全に一つの画像としてまとめたい場合は、マクロの冒頭で `ActiveSelection.Group` を実行するか、事前にグループ化(Ctrl + G)しておくのが安全です。

トラップ②:背景が黒くなってしまう / 透明にならない

> 現象: PNGで書き出したのに、背景が白や黒で塗りつぶされてしまう。
> 対策: `ExportBitmap` の引数にあるアルファチャンネル(透明度)の設定や、カラーパレットの指定を見直す必要があります。Web用であれば背景を透明(アルファチャンネル有効)にする設定が不可欠です。必要に応じてエクスポートのダイアログで手動記録したコードの数値を当てはめてみてください。

トラップ③:マクロのセキュリティ警告で実行できない

> 現象: 「マクロが無効にされました」というセキュリティバーが出る。
> 対策: `[ツール] > [マクロ] > [セキュリティ]` から、デジタル署名されたマクロを許可するか、信頼できる場所にマクロを保存したフォルダを追加してください。

まとめ

お疲れ様でした!
今回は、CorelDRAW VBAを使って「選択シェイプを高解像度PNGとして切り出す」という、実務で今すぐ使える強力な自動化手法を解説しました。

たったこれだけのコードですが、ここには「状態のチェック」「動的なパス取得」「CorelDRAW専用APIの正確な呼び出し」という、プログラミングの基礎と現場の知恵がギュッと詰まっています。

このコードをベースに、保存ファイル名を連番にしたり、JPEGやPDFへのフォーマット変換に応用したりと、あなただけのカスタムツールへと育てていってください。

「ここをもっとこうしたい!」という疑問があれば、いつでも先輩エンジニアにお尋ねください。あなたの自動化ライフを心から応援しています!

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