【入門編】【初心者向け】指定した倍率でアクティブドキュメント全体のレイアウトサイズを縮小・拡大して別名で上書き保存する基本自動化 – CorelDRAW VBA解析バイブル

スポンサーリンク

CorelDRAW VBAを掌握せよ:ドキュメント一括リサイズで学ぶ自動化の第一歩

こんにちは。CorelDRAWの自動化の世界へようこそ。
「マクロの記録」ボタンを押して、生成されたコードを眺めて「なんとなく動いたから良し」としていませんか?

もしあなたが、単なる作業の効率化を超えて、CorelDRAWという巨大なグラフィックスエンジンの「制御権」を握りたいのであれば、ここからが本当のスタートです。今日は、最も基本的かつ強力な「ドキュメント全体のリサイズと別名保存」というテーマを通じて、VBAの真髄を伝授します。

1. なぜ「手動」ではダメなのか?

例えば、100個のロゴデータがあり、すべてを「120%に拡大して別名で保存する」というタスクを想像してください。手動でやれば、設定ミスや保存漏れが必ず発生します。

VBAを使えば、コンピュータは疲れることなく、ミリ単位の精度で、かつ一瞬でこの作業を完遂します。これが「自動化の力」です。

2. 実践:ドキュメントをスマートにリサイズするコード

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

Sub ResizeAndSaveAs()
‘ ドキュメントオブジェクトを操作するための準備
Dim doc As Document
Set doc = ActiveDocument

‘ 拡大・縮小倍率の設定(1.2 は 120%)
Dim scaleFactor As Double
scaleFactor = 1.2

‘ 保存先のパス(環境に合わせて書き換えてください)
Dim savePath As String
savePath = “C:\Output\Resized_” & doc.Name

‘ プロポーションを維持したまま拡大・縮小
‘ ScaleWidth/Height はオブジェクトだけでなくページ全体にも適用可能
doc.ActivePage.Shapes.All.ScaleW scaleFactor, scaleFactor

‘ ページサイズもリサイズに合わせて変更(重要!)
Dim newWidth As Double, newHeight As Double
newWidth = doc.ActivePage.SizeWidth scaleFactor
newHeight = doc.ActivePage.SizeHeight scaleFactor
doc.ActivePage.SetSize newWidth, newHeight

‘ 別名で保存(CDR形式)
doc.SaveAs savePath

MsgBox “リサイズ完了!保存先: ” & savePath
End Sub

3. コードの「魂」を読み解く

初心者の方がつまずきやすいポイントを、エンジニアの視点で紐解きます。

① `ActiveDocument` の呪縛を解く

`ActiveDocument` は便利ですが、常に「今開いているもの」を参照します。本格的なツールを作る際は、開いているドキュメントが本当に正しいか(Nullではないか)を確認する「エラーハンドリング」が不可欠になります。

② `Shapes.All` とは何者か?

`doc.ActivePage.Shapes.All` は、現在のアクティブページにある「すべてのオブジェクトの集合体」を指します。これに対して `ScaleW`(Scale Width)メソッドを使うことで、グループ化されていない個々のオブジェクトであっても、一斉にプロポーションを維持して変形させることができます。

③ なぜ `SetSize` が必要なのか?

ここが一番の落とし穴です。オブジェクトだけを大きくしても、ドキュメントの「キャンバスサイズ」が変わらなければ、はみ出した部分は見えなくなってしまいます。
「オブジェクトのリサイズ」と「キャンバス(ページ)のリサイズ」は別物である――この概念を理解した瞬間、あなたは初級者を卒業です。

4. 初心者が陥りやすい「罠」への対策

  • 単位の問題: CorelDRAWのVBAは、ドキュメントの単位(mm, inch, pixel)に依存します。計算が狂う場合は、コードの冒頭で `doc.Unit = cdrMillimeter` のように単位を固定する癖をつけましょう。
  • 名前の衝突: `SaveAs` で既存のファイルを上書きしようとするとエラーが出ることがあります。実務では、ファイルが存在するかチェックする `If Dir(savePath) <> “” Then …` という条件分岐を挟むのがプロの作法です。

5. 次のステップへ

今回のコードはあくまで「基本」です。ここから先は、以下のような応用が待っています。

1. ループ処理: フォルダ内の全CDRファイルを自動的に開いて一括処理する。
2. 設定ファイル: 倍率をプログラムに直書きせず、テキストファイルから読み込む。
3. ログ出力: どのファイルが成功し、どれが失敗したかをテキストファイルに記録する。

CorelDRAW VBAは、あなたの指先一つで数千時間の労働を消し去ることができる強力な魔法の杖です。まずはこのコードを動かし、自分の環境で「結果」が出る快感を味わってください。

もしエラーが出たら、それはあなたのコードがダメなのではなく、CorelDRAWが「もっと正確な指示をくれ」と言っているだけです。恐れずに、そのエラーメッセージをGoogleに問いかけてみてください。それが、最強の自動化エンジニアへの第一歩です。

それでは、素晴らしい自動化ライフを!

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