2.インデザインスクリプト 初級講座(1)実行エラーについて
管理者用「1.インデザインスクリプト 初級講座(1)インデザインの起動 」 の項において、2行のインデザインの起動を行うスクリプトを実行しました。
Private Sub CommandButton1_Click()
Set myInDesign = CreateObject("InDesign.Application.CC_J") 'インデザインを起動
Set myDocument = myInDesign.Documents.Add 'ドキュメント作成
End Sub
インデザインを起動して、1ページのドキュメントを作成する、単純なスクリプトでした。
こんな単純なスクリプトでも、ボタンをクリックして実行させようとするエラーが出る場合が有ります。
私の場合は、文字入力ミスの場合が多いようですが、この辺りは、性格が良く出ます。
1.デバッグ
エラーが発生した場合は、その原因を調べて、手直しを行って再度実行の工程を繰り返します。
いわゆる、デバックです。
エラーメッセージが表示されたら、[デバッグ] ボタンをクリックします。
エラーを検出したスクリプトの行を強調表示してくれます。
この行まで、実行して来て エラーを検出してストップしているとも言えます。
原因を探りましょう。
エラーの原因が、その行にある場合もありますが、更にもっと前の実行結果にある場合があります。
スクリプトが複雑になってくると、その原因を探ることが難しくなってきます。
しかし、エクセルVBAは、デバック用の機能も充実しているので助けてくれるでしょう。
カーソルを "myDocument" の上に持ってきた時に、その内容が表示されます。
この場合には、"myDocument=Empty値" と表示されています。
= myInDesign.Documents.Add 側の値がEmpty と言う事でしょう。
カーソルを " myInDesigna" の上に持ってきた時に、その内容が表示されます。
この場合には、 myInDesigna = "Adobe InDesign" と表示されています。
= CreateObject("InDesign.Application.CC_J") は問題なさそうです。
不具合箇所を訂正します。
Set myInDesigna = CreateObject("InDesign.Application.CC_J") 'インデザインを起動
Set myDocument = myInDesign.Documents.Add 'ドキュメント作成
変数が間違えていました。
不具合箇所の訂正は、実行停止してから行っても問題ありません。
実行を停止します。
実行 ⇒ リセット
エラーが発生した時、どこまで進んでいるのかと言う事も、原因究明の手掛かりとなるでしょう。
この2行のスクリプトで見た場合、
インデザインが起動されていなければ、
Set myInDesign = CreateObject("InDesign.Application.CC_J") 'インデザインを起動
この行に問題があります。
インデザインは起動して、ページが作られていなければ
Set myDocument = myInDesign.Documents.Add 'ドキュメント作成
この行が実行できなかった事が判断できます。
2、コンパイルエラー
ボタンをクリックして、コンパイルエラーが表示された場合は、まだスクリプトの実行に入ってません。
記述した構文に誤りがあるはずです。
VBAの記述の規則に反していると言うことでしょうか。
3.ライブラリーの参照設定
VBAでら、インデザインが持っている、各機能を使うためには、インデザインライブラリーの参照設定をしておく必要があります。
[ツール]⇒[参照設定]
インデザインのライブラリーファイルに チェックが入っていることを確認してください。
[ツール]⇒[参照設定]
インデザインのライブラリーファイルに チェックが入っていることを確認してください。
もし、参照設定されていないばあいは、Adobe InDesign・・・Type Library を一覧から探して、チェックを入れます
これで OK
エクセルVBAで初めて、インデザインを使用するスクリプトを使うときは、設定されていないケースが多いと思われます。
4.変数の宣言
初めから、コンパイルエラーが発生する場合は、コードの先頭行に ”Option Explcit” の記述があるか確認しましょう。
コードの先頭行に ”Option Explcit” の記述がある場合は、変数定義を正しく記述してないとコンパイルエラーが発生します。
先頭行に ”Option Explcit” を消去するか、変数定義コードを追加します。
私の場合は、先頭行を消して使う場合が多いのですが、スクリプトの間違いを少なくするためにも定義する事をお勧めします。
変数定義は、 Dim XXXXX と記述します。
Option Explicit
Private Sub CommandButton1_Click()
Dim myInDesign, myDocument
Set myInDesign = CreateObject("InDesign.Application.CC_J") 'インデザインを起動
Set myDocument = myInDesign.Documents.Add 'ドキュメント作成
End Sub
先頭行の Option Explicit コードは、自動的に挿入されますが、挿入しないように設定が可能です。
[ツール]⇒[オプション]
[編集]タブから、「変数の宣言を強制する(R)」 にチェックが入っている場合、
Option Explicit が記述されている。