VBScript

【Illustrator】指定したPDFプリセットでAIファイルをPDFに一括変換するVBScript

前回の記事で、Illustratorに登録されたPDFプリセットを列挙するスクリプトを紹介しましたが、今回はPDFプリセットを指定して、AIファイルをPDFに一括変換するスクリプトを紹介します。

まずは1ファイルでの処理ですが、今回のスクリプトもIllustratorが起動済みであることを前提としているので、Illustratorの起動からスクリプトに組み込む場合は、下記記事のコードをご参照ください。

Option Explicit

Dim appAi

Set appAi = Nothing '初期化
On Error Resume Next
Set appAi = GetObject(, "Illustrator.Application")
On Error GoTo 0
If appAi Is Nothing Then
  MsgBox "Illustratorを起動した状態でスクリプトを実行してください。", vbExclamation + vbSystemModal
  Wscript.Quit
End If

AiToPdf appAi, _
        "[最小ファイルサイズ]", _
        "C:\wk\Sample.ai", _
        "C:\wk\Sample.pdf"

MsgBox "処理が終了しました。", vbInformation + vbSystemModal

Private Sub AiToPdf(ByVal appAi, ByVal preset_name, ByVal ai_path, ByVal pdf_path)
'AIファイルを指定したPDFプリセットでPDF変換
  Dim opt
  Const aiDoNotSaveChanges = 2
  
  Set opt = CreateObject("Illustrator.PDFSaveOptions")
  opt.PDFPreset = preset_name 'PDFプリセットの指定
  
  '下記処理中にオートメーションエラーが発生した場合、
  '一度手動でPDF保存した後、再度スクリプト実行
  With appAi
    With .Open(ai_path)
      .SaveAs pdf_path, opt
      .Close aiDoNotSaveChanges
    End With
  End With
End Sub

上記コードでは、Illustrator.ApplicationオブジェクトのOpenメソッドでAIファイル(Documentオブジェクト)を開き、SaveAsメソッドを使ってPDFファイルとして保存をしています。

その際、SaveAsメソッドの第2引数によって、PDFプリセットを含めた様々なオプションを指定することができます(PDFSaveOptions)。

個人的には、PDFSaveOptionsで細かくオプション指定するよりは、事前にPDFプリセットを用意しておいて、それをPDFSaveOptions.PDFPresetプロパティで指定するのが楽だと思います。

なお、このスクリプトも環境によってはオートメーションエラーが発生する可能性があるため、エラーが発生した場合には、一度手動でAI→PDF保存を行った後、改めてスクリプトを実行してください。

指定したフォルダ内のAIファイルを指定したPDFプリセットで一括変換するスクリプト

1ファイルでのPDF変換が確認できたら、次は複数ファイルの一括処理です。

Option Explicit

Dim appAi
Dim fol, f
Dim fpath

Set appAi = Nothing: Set fol = Nothing '初期化
On Error Resume Next
Set appAi = GetObject(, "Illustrator.Application")
On Error GoTo 0
If appAi Is Nothing Then
  MsgBox "Illustratorを起動した状態でスクリプトを実行してください。", vbExclamation + vbSystemModal
  Wscript.Quit
End If

Set fol = CreateObject("Shell.Application") _
          .BrowseForFolder(0, "AIフォルダ選択", &H10, 0)
If fol Is Nothing Then Wscript.Quit
fpath = fol.Self.Path

With CreateObject("Scripting.FileSystemObject")
  If Not .FolderExists(fpath) Then Wscript.Quit
  For Each f In .GetFolder(fpath).Files
    Select Case LCase(.GetExtensionName(f.Path))
      Case "ai" 'AIファイルのみ処理
        'AIファイルと同じフォルダにPDFファイル出力
        AiToPdf appAi, _
                "[最小ファイルサイズ]", _
                f.Path, _
                AddPathSeparator(.GetParentFolderName(f.Path)) & .GetBaseName(f.Path) & ".pdf"
    End Select
  Next
End With

MsgBox "処理が終了しました。", vbInformation + vbSystemModal

Private Sub AiToPdf(ByVal appAi, ByVal preset_name, ByVal ai_path, ByVal pdf_path)
'AIファイルを指定したPDFプリセットでPDF変換
  Dim opt
  Const aiDoNotSaveChanges = 2
  
  Set opt = CreateObject("Illustrator.PDFSaveOptions")
  opt.PDFPreset = preset_name 'PDFプリセットの指定
  
  '下記処理中にオートメーションエラーが発生した場合、
  '一度手動でPDF保存した後、再度スクリプト実行
  With appAi
    With .Open(ai_path)
      .SaveAs pdf_path, opt
      .Close aiDoNotSaveChanges
    End With
  End With
End Sub

Private Function AddPathSeparator(ByVal s)
  If Right(s, 1) <> ChrW(92) Then s = s & ChrW(92)
  AddPathSeparator = s
End Function

メインの処理は1ファイルのときと同じですが、Shell.BrowseForFolderメソッドでフォルダを選択し、FileSystemObject.GetExtensionNameメソッドによってAIファイルのみを対象として変換処理を行っている点が異なります。

Illustratorをスクリプトから操作する強みは、上記のように手作業で行うのは手間がかかる定形作業を自動化できる点にあると思います。

そういったわけで、Illustratorで決まった作業を毎日ポチポチ手作業されている方は、スクリプトによる自動化も考えてみてはいかがでしょうか?

Illustratorに登録されたPDFプリセットを列挙するVBScript前のページ

Microsoft Graph ExplorerがMicrosoft アカウント(MSA)に対応しました。次のページ

関連記事

  1. VBScript

    画像の一部にぼかしを入れるバッチ処理

    Paint.NETなどの画像処理ソフトを使うと、簡単に画像にぼかしを入…

  2. Office関連

    ドラッグ&ドロップでExcelのアドインを登録するVBScript

    「ドラッグ&ドロップでWordのテンプレートを登録・解除する(VBS)…

  3. Windows関連

    ダウンロードフォルダーのパスを取得するVBScript

    ダウンロードフォルダーのパスを取得する必要があったので、過去に書いた記…

  4. VBScript

    動画回転用簡易FFmpegフロントエンド

    アーケードゲームのプレイを録画した際、機器によっては録画した動画の向き…

  5. Windows 10

    Microsoft Update カタログから累積更新プログラムをダウンロードするVBScript

    「累積更新プログラム」とは、その名の通りOSを最新の状態に保つための更…

  6. VBScript

    msgファイルから添付ファイルを抽出するVBScript

    「msgファイルから添付ファイルを抽出するスクリプト」といったキーワー…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP