Scriptを完成させた後、実行させてみるとエラーが出ることがあります。Scriptの書き方が間違っていたり、アルゴリズムが良くなかったりすると動かないのです。
動かなったScriptを動くように修正していく作業の事を「デバッグ」と呼びます。
最初の頃はエラーが出て、動かない理由が分からずに苦労することも多々あると思います。そういう苦労から解放されるためにも、エラーが出ないように書いていく方法を勉強していきましょう。
まずは、存在しないメソッドやプロパティを呼び出した際に出る警告を見てみましょう。新しい用語が出てきましたので説明をしておきます。
メソッドとは、オブジェクトが持っている機能の名称のことで、検索するときやテキストフレームを移動させたりするときに使うものです。
プロパティとは、オブジェクトが持っている値のことで、テキストフレームに入力されている文字列やテキストフレームの座標、ルビ文字などのことです。
では、次の名称でSubプロシジャーを作ってください。
Sub デバッグのお勉強()
さて、次に示すコードを入力してください。
Dim MyInDesign As InDesign.Application
Set MyInDesign = CreateObject("InDesign.Application.CS")
With MyInDesign
Set MyDoc = .Documents.Add
MyDoc.SaveAs "C:\test.indd" '保存
Set MyDoc = Nothing
End With
Set MyInDesign = Nothing
上記のコードでは新しい記法が出現しました。その説明をしておきます。
3行目のWith MyInDesignという構文ですが、省略するときの記法になります。本来4行目を記述するときは、Set MyDoc = MyInDesign.Documents.Addと記述するのですが、MyInDesignを記述するのが面倒なので、Withブロックで指定しています。例文では1行しか対象になるコードがありませんが、これが何百、何千もあると大変です。さらにWithブロック内の省略については高速化できるという「おいしい」特典もあるのです。このWith ~という構文はEnd Withが書かれている行の前まで有効になりますので、この範囲内で『.』キーを押すと、Applicationクラスのプロパティやメソッドが表示されるようになります。今後の記事でも多用していくであろうと思いますので、「省略記法なんだな」と思って頂ければ結構です。
では、Scriptの流れを説明いたします。4行目で新規ドキュメントを作って参照できるようにMyDocに格納しています。5行目のMyDoc.SaveAsに保存したいFileのPath("C:\test.indd")を指定して保存しようとしています。
実はこの5行目がエラーの直接原因となっています。

エラーの理由は、MyDocに格納したドキュメントのメソッドSaveAsを呼び出そうとしていますが、そのメソッドが存在しないのでエラーです。という事をVBEが教えてくれたのです。さて、正解のメソッドは何だったのでしょうか? それを調べる方法がありますので、次の画面を見て下さい。

この画面は、オブジェクトブラウザといいます。タイプライブラリで定義されたプロパティやメソッドを検索することができます。
◆ダウンメニュー【表示(V)→オブジェクトブラウザ(O)】と選択します。
このオブジェクトブラウザは『F2』キーを押すことでも表示できます。
画面ではオブジェクトブラウザのウィンドウ左上のコンボボックスをクリックして選ぶ所が表示されています。InDesignがハイライトしていますが、ここには参照設定で選択したタイプライブラリが表示されます。参照設定をしていない時にはInDesignが選べませんので、参照設定をしておいてくださいね。
InDesignを選ぶと、左下にInDesignで定義されているクラスの一覧が表示されます。右下には左下で選択したクラスのメンバが表示される仕組みになっています。メンバにはメソッドとプロパティの両方が表示されます。
最下部のグレーの領域には、メンバに表示されたプロパティやメソッドの説明が英文で表示されます。
では、InDesignのタイプライブラリを選択したので、正しいメソッドを探しましょう。
画面の検索ボックスにキーワードとして「Save」と入力して『Enter』キーを押して下さい。「SaveAs」で検索してもダメですよ。

画面が切り替わり、検索結果にいくつかのメンバが表示されました。このメンバにはSaveAsはありません。ですからエラーを表示されたんですね。
正しくは「Save」でした。最下部の説明には英文で引数について書かれていますが、本章では触れません。オブジェクトブラウザを閉じて下さい。
5行目のSaveAsをSaveに修正して実行してみましょう。正しく処理が完了すればCドライブにtest.inddというドキュメントデータが保存されていると思います。
*
また、この章で勉強して欲しい事がもう1つあります。それはインテリセンス機能をフルに活用することです。そもそもインテリセンス機能を使って記述していれば、上述のようなエラーは起こり得ないのです。
それでは間違っていたScriptをもう一度準備して下さい。
Dim MyInDesign As InDesign.Application
Set MyInDesign = CreateObject("InDesign.Application.CS")
With MyInDesign
ここまでは普通に記述します。4行目の変数MyDocにはDocumentを入れることが分かっていますので、MyDocの型(種類みたいなモノです)をInDesign.Documentとして宣言しましょう。4行目の前に次の1行を入れることにします。
Dim MyDoc As InDesign.Document
この宣言を入れることによって、MyDocはInDesignのDocumentを格納する変数として宣言されることになります。この行を加えることでMyDocにもインテリセンス機能が働くようになります。
元の4行目はそのままでOKです。
Set MyDoc = .Documents.Add
では元の5行目のMyDocの後の『.』を選択して、さらに『.』キーを押してインテリセンス機能の画面を表示させましょう。

画面では修正するSaveAsの項目をSaveにしたいので、Saveをハイライト表示させています。ハイライトさせたら『Tab』キーを押して下さい。『Enter』を押すと、改行されてしまいますので注意して下さい。
MyDoc.Save "C:\test.indd" '保存
これ以降には修正がありませんので、そのままにしておきましょう。
Set MyDoc = Nothing
End With
Set MyInDesign = Nothing