VBScript

Adobe Illustratorを操作するVBScript

Acrobatと同様にタイプライブラリが用意されているため、VBAやVBSからIllustratorを操作することができます。

今回はIllustratorを操作して新規ドキュメントを作成、文字を追加するスクリプトを紹介します。

Option Explicit

Sample

Public Sub Sample()
'Illustratorのオートメーションテスト
  Dim appAi
  Dim doc
  
  Set appAi = GetIllustratorObject()
  If appAi Is Nothing Then
    MsgBox "Illustrator.Applicationオブジェクトを取得できませんでした。", vbExclamation + vbSystemModal
    Exit Sub
  End If
  
  With appAi
    Set doc = .Documents.Add
    With doc.TextFrames.Add
      .Top = 300
      .Left = 50
      .TextRange.CharacterAttributes.Size = 28
      .Contents = "Name:" & appAi.Name & vbNewLine & _
                  "Version:" & appAi.Version & vbNewLine & _
                  "Build Number:" & appAi.BuildNumber & vbNewLine & _
                  "Locale:" & appAi.Locale
    End With
  End With
End Sub

Private Function GetIllustratorObject()
'Illustrator.Applicationオブジェクトを取得
  Dim obj
  Dim ai_path
  
  Set obj = Nothing: ai_path = "" '初期化
  On Error Resume Next
  Set obj = GetObject(, "Illustrator.Application")
  On Error GoTo 0
  
  'Illustratorが起動していない場合はRunメソッドで起動
  If obj Is Nothing Then
    ai_path = GetIllustratorExePath()
    With CreateObject("Scripting.FileSystemObject")
      If .FileExists(ai_path) = True Then
        CreateObject("WScript.Shell").Run """" & ai_path & """", 1, False
        WScript.Sleep 6000 '起動待ち
        On Error Resume Next
        Set obj = GetObject(, "Illustrator.Application")
        On Error GoTo 0
      End If
    End With
  End If
  
  Set GetIllustratorObject = obj
End Function

Private Function GetIllustratorExePath()
'Illustrator.exeのパスを取得
  Dim itm
  Dim ret
  Const CSIDL_COMMON_PROGRAMS = 23
  
  '[プログラム]にあるショートカットファイルからIllustrator.exeのパスを取得
  With CreateObject("Shell.Application").Namespace(CSIDL_COMMON_PROGRAMS)
    For Each itm In .Items
      If InStr(LCase(itm.Name), "illustrator") Then
        With CreateObject("WScript.Shell").CreateShortcut(itm.Path)
          ret = .TargetPath
        End With
        Exit For
      End If
    Next
  End With
  GetIllustratorExePath = ret
End Function

上記コードを見れば分かる通り、Illustrator.Applicationオブジェクトの取得部分の処理が冗長になっています。

通常であれば

Set appAi = CreateObject("Illustrator.Application")

と、WordやExcelのようにすれば問題無いはずですが、Illustratorの場合はなぜか“Illustratorが起動している状態”でないと操作が上手くいきません。
(ウィンドウが表示されず、また、Visibleプロパティも読み取り専用であるため、操作不能)

そのため、上記コードでは、

  1. Illustratorが起動しているかどうかを判別。
  2. 起動していない場合は「プログラム」にあるショートカットファイルからIllustrator.exeのパスを取得し、WshShell.Runメソッドで起動。
  3. Illustrator.Applicationオブジェクトを取得。

といった処理を行っています。

実行ファイルのパスを取得する処理がプログラムフォルダに依存しているため、正確性には欠けるのですが、一応は目的を達成できるので、これで良しとしています。

Illustratorスクリプトの詳細については、下記サイトからリファレンスをダウンロードできるので、そちらをご参照ください。

関連記事

  1. VBScript

    指定したフォルダ内で最も更新日時の新しいファイルのパスを取得するVBScript

    大量のログファイルから最新のファイルのみを取得する必要があったので、簡…

  2. VBScript

    Microsoft Edgeのバージョン情報をクリップボードにコピーするVBScript

    前回の記事に引き続き、自分の手間を減らすためのスクリプト、今回はMic…

  3. VBScript

    Acrobatを使ってPDFファイルを結合するVBScript

    「Acrobat PDF 結合 コマンドライン」といったキーワード検索…

  4. VBScript

    OWSPostDataオブジェクトを使って文字列をエンコードするVBS

    OWSPostDataオブジェクトのURLEncodeメソッドで文字列…

  5. Windows 10

    Microsoft Edgeを起動するVBScript

    前回の記事の関連ですが、下記コードのようにShellExecuteメソ…

  6. Windows関連

    OSのバージョン情報をクリップボードにコピーするVBScript

    OSのバージョンやビルド番号をブログの記事内に書くことがあるのですが、…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP