Excelを利用したVBScriptの作り方

VBScriptを作るのにいきなりエディタで書き始めてもよいですが、あまり効率がよくありません。

そこでわたしはExcel 2000をエディタ代わりに使っています。 ExcelにはVBE(Visual Basic Editor)という機能があり、本来はVBAを作成するものですが、色々と便利なため、そこで作成したものをVBScript用に変更するということを行っています。

 

1

まずはExcelを立ち上げます。立ち上げたらVBEを開きます。

 

2

次に参照設定を開いて必要なコンポーネントにチェックを入れます。

 

わたしの知っているコンポーネントは以下の通りです。

InDesign 2.0 Adobe InDesign 2.0J Type Library
InDesign CS(3.0) Adobe InDesign CS Type Library
InDesign CS2(4.0) Adobe InDesign CS2 Type Library
(1つだけチェックを入れればよい)
InDesign CS3(5.0) Adobe InDesign CS3 Type Library
InDesign CS4(6.0) Adobe InDesign CS4 Type Library
InDesign CS5(7.0) Adobe InDesign CS5 Type Library
(注)表示されない場合があります。最下部を参照。
InDesign CS5.5(7.5) Adobe InDesign CS5.5 Type Library
(注)表示されない場合があります。最下部を参照。
Illustrator 10.0 Adobe Illustrator 10.0 Type Library
Illustrator CS(11.0) Adobe Illustrator 11.0 Type Library
Illustrator CS2(12.0) Adobe Illustrator CS2 Type Library
Illustrator CS3(13.0) Adobe Illustrator CS3 Type Library
(注)エラーがでる場合があります。最下部を参照。
Illustrator CS4(14.0) Adobe Illustrator CS4 Type Library
Illustrator CS5(15.0) Adobe Illustrator CS5 Type Library
Photoshop CS2(9.0) Adobe Photoshop 9.0 Object Library
Photoshop CS3(10.0) Adobe Photoshop CS3 Object Library
Photoshop CS5(12.0) Adobe Photoshop CS5 Object Library

以上で準備は完了です。

 

3

わたしの場合、この後新しくモジュールを作成して、その中に記述していますが、特に必要というわけではありません。 また、オブジェクトブラウザとローカルウィンドウは必ず開いています。ローカルウィンドウはあとで説明します。

 

オブジェクトブラウザはコンポーネントの持っているプロパティなどを表示してくれます。検索もできます。

 

4

あとはひたすら記述していくのみです。

ただし、VBAで使用できてもVBScriptでは使用できないものがあるので注意が必要です。定数も10進数で記述しておく癖を付けた方がよいと思います。下はVBAではFormat(i,"00")としたいところですが、Format関数が使えないため、keta2という関数を自作した例です。

Sub sample()
    Dim app As InDesign.Application
    Dim doc As InDesign.Document
    Dim txf As InDesign.TextFrame
    Dim i As Integer, j As Integer
    Set app = CreateObject("InDesign.Application.CS2_J")
    Set doc = app.Documents.Add()
    With doc.ViewPreferences
        .HorizontalMeasurementUnits = 2053991795 'idMillimeters
        .VerticalMeasurementUnits = 2053991795
        .TextSizeMeasurementUnits = 2054255973 'idQ
    End With
    doc.DocumentPreferences.PageWidth = 210
    doc.DocumentPreferences.PageHeight = 297
    Set txf = doc.TextFrames.Add
    txf.GeometricBounds = Array(30, 10, 180, 200)
    txf.ParentStory.StoryPreferences.StoryOrientation _
        = 1986359924 '=idStoryHorizontalOrVertical.idVertical
    txf.ParentStory.PointSize = 60
    For i = 1 To 5
        j = txf.InsertionPoints.Count
        txf.InsertionPoints(j).Tatechuyoko = True
        txf.InsertionPoints(j).Contents _
            = keta2(Second(Now()))
        txf.InsertionPoints(j + 2).Tatechuyoko = False
        txf.InsertionPoints(j + 2).Contents = "秒<000d>"
    Next i
    doc.Save "c:\sample.indd"
    app.Quit
End Sub

Function keta2(i As Integer) As String
    If i < 10 Then
        keta2 = "0" & CStr(i)
    Else
        keta2 = CStr(i)
    End If
End Function

アプリケーションを動かすためには必ず各コンポーネントを呼び出す必要があります。 呼び出すためにはCreateObjectを使います。それぞれのアプリケーションの記述は以下の通りです。

InDesign 2.0 InDesign.Application.2
InDesign CS(3.0) InDesign.Application.CS
InDesign CS2(4.0) InDesign.Application.CS2_J
InDesign CS3(5.0) InDesign.Application.CS3_J
InDesign CS4(6.0) InDesign.Application.CS4_J
InDesign CS5(7.0) InDesign.Application.CS5_J
InDesign CS5.5(7.5) InDesign.Application.CS5.5_J
Illustrator 10.0 Illustrator.Application.1
Illustrator CS(11.0) Illustrator.Application.2
Illustrator CS2(12.0) Illustrator.Application.3
Illustrator CS3(13.0) Illustrator.Application.4
Illustrator CS4(14.0) Illustrator.Application.CS4
Illustrator CS5(15.0) Illustrator.Application.CS5
Photoshop CS2(9.0) Photoshop.Application.9
Photoshop CS3(10.0) Photoshop.Application.10
Photoshop CS5(12.0) Photoshop.Application.12
Photoshop.Application.12.1

 

5

記述が完了したらデバッグを行います。エラーがあれば教えてくれます。また、このときローカルウィンドウでは生成されたオブジェクトの各プロパティの値を教えてくれるので、どういう状況なのか知ることができます。

 

6

いよいよ最終段階。完成したスクリプトを、エディタにコピー&ペーストして、VBScript用に変更します。 このときVBAとVBScriptの違いを理解していないと、この作業はできませんので注意が必要です。

'Sub sample()
    Dim app 'As InDesign.Application
    Dim doc 'As InDesign.Document
    Dim txf 'As InDesign.TextFrame
    Dim i, j 'As Integer
    Set app = CreateObject("InDesign.Application.CS2_J")
    Set doc = app.Documents.Add()
    With doc.ViewPreferences
        .HorizontalMeasurementUnits = 2053991795 'idMillimeters
        .VerticalMeasurementUnits = 2053991795
        .TextSizeMeasurementUnits = 2054255973 'idQ
    End With
    doc.DocumentPreferences.PageWidth = 210
    doc.DocumentPreferences.PageHeight = 297
    Set txf = doc.TextFrames.Add
    txf.GeometricBounds = Array(30, 10, 180, 200)
    txf.ParentStory.StoryPreferences.StoryOrientation _
        = 1986359924 '=idStoryHorizontalOrVertical.idVertical
    txf.ParentStory.PointSize = 60
    For i = 1 To 5
        j = txf.InsertionPoints.Count
        txf.InsertionPoints(j).Tatechuyoko = True
        txf.InsertionPoints(j).Contents _
            = keta2(Second(Now()))
        txf.InsertionPoints(j + 2).Tatechuyoko = False
        txf.InsertionPoints(j + 2).Contents = "秒<000d>"
    Next 'i
    doc.Save "c:\sample.indd"
    app.Quit
'End Sub

Function keta2(i)
    If i < 10 Then
        keta2 = "0" & CStr(i)
    Else
        keta2 = CStr(i)
    End If
End Function

この場合、赤字のところが変更箇所。

 

7

変更が完了したら適当なファイル名をつけて、適当な場所に保存します。拡張子はvbsにする必要があります。


 

(注)Illustrator CS3で参照設定を行おうとするとエラーがでる

Illustrator CS3で参照設定を行おうとすると次のようなエラーがでます。

これは参照設定で指定されたファイルが見つからないということを意味しています。原因はIllustratorのインストール時にレジストリに書き込まれたコンポーネントの参照先が間違っていることによるものです。

これは以下のように、レジストリを2箇所書き換えることで解消されます。

また、レジストリに関してはここでは詳しくは触れません。市販のパソコン書籍等を参考にしてください。間違って書き換えた場合、最悪パソコンが起動しなくなる可能性がありますので、注意が必要です。

その1

[HKEY_CLASSES_ROOT\TypeLib\{743F09D0-5A60-472F-93A4-4C761F332103}\1.0\0\win32]

(既定)のところ

元の文字列 C:\Program Files\Adobe\Adobe Illustrator CS3\Plug-ins\Extensions\ScriptingSupport.aip

新しい文字列 C:\Program Files\Adobe\Adobe Illustrator CS3\プラグイン\機能拡張\スクリプトサポート.aip

その2

[HKEY_CLASSES_ROOT\TypeLib\{743F09D0-5A60-472F-93A4-4C761F332103}\1.0\HELPDIR]

(既定)のところ

元の文字列 C:\Program Files\Adobe\Adobe Illustrator CS3\Plug-ins\Extensions

新しい文字列 C:\Program Files\Adobe\Adobe Illustrator CS3\プラグイン\機能拡張

 

この問題に関して、アドビのサポートデータベースにサポート文書が出されましたので合わせて確認してください。

文書番号:233473

Visual Basic でエラーメッセージ「DLL 読み込み時のエラーです」が表示される(Illustrator CS3)

 


 

(注)InDesign CS5/5.5でVBScriptが実行されない/参照設定に表示されない

InDesign CS5/5.5でVBScriptが実行されない場合があります。これはWindows XPでは発生せず、Windows 7で発生します。(Windows Vistaでは確認できていませんがおそらく発生すると思われます。

原因はInDesignのインストール時にレジストリに書き込まれたコンポーネントの参照先が間違っていることによるものです。

これは以下のように、レジストリを書き換えることで解消されます。

また、レジストリに関してはここでは詳しくは触れません。市販のパソコン書籍等を参考にしてください。間違って書き換えた場合、最悪パソコンが起動しなくなる可能性がありますので、注意が必要です。

CS5の場合 その1

[HKEY_CLASSES_ROOT\TypeLib\{0EAE2841-EABD-4550-BC0B-2C5097031493}\1.0\0\win32]

(既定)のところ

元の文字列 C:\ProgramDataAdobe\InDesign\Version 7.0\ja_JP\Scripting Support\7.0\Resources for Visual Basic.tlb

新しい文字列 C:\ProgramData\Adobe\InDesign\Version 7.0-J\ja_JP\Scripting Support\7.0\Resources for Visual Basic.tlb

CS5の場合 その2

[HKEY_CLASSES_ROOT\TypeLib\{0EAE2841-EABD-4550-BC0B-2C5097031493}\1.0]

(既定)のところ

元の文字列 (空欄)

新しい文字列 Adobe InDesign CS5 Type Library

 

CS5.5については確認が取れ次第記載します。

アドビに報告しましたのでそのうちサポート文書が出るか、アップデートで解消されると思います。

 

[HOME]