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
(注)表示されない場合があります。
 →[参照設定でエラーが出る場合の対処法]
InDesign CS6(8.0) Adobe InDesign CS6 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
InDesign CS6(8.0) InDesign.Application.CS6_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にする必要があります。

 

[HOME]