VBScriptでのメソッドの返り値
アドビユーザーフォーラムでの質問
Duplicateの戻りオブジェクト取得方法(リンク切れ)から。
前々からVBScriptでのメソッドの返り値は何かおかしいな、とは気付いていたんだけど。
改めてテストしてみるとやっぱりおかしい。別にDuplicateに限らず。
今回同じ操作をVBScriptとJavaScriptで比較してみて、JavaScriptでは問題ない、やっぱりVBScriptの問題と確信した。
実は、だからといって、自分自身は殆ど影響を受けない。というのも、VBScriptは主に新規にデータを作成するためにVBAから使用することが多いので、操作したいオブジェクトはあらかじめ分かっているから。特に返り値を必要とする操作(メソッド)は行わないのである。
逆にJavaScriptでは新規にデータを作成することは殆どない。こちらは主に既存のデータの修正を行うために使用している(Macでも作業ができるようにね)。
多分、Adobeの意図もこんなところだと思っている(勝手に)。
それはさておき、フォーラムでの回答なのだが、悩んで色々テストした挙句、最後の回答。自分の足りない思考回路を人にばらしてしまったようで、ちと恥ずかしい。
ind1.Select(txt1.Duplicate(Array(100, 0)))
Set txt2 = ind1.Selection(1)
に落ち着くんだろうなあ
なんだかんだやっても結局、プログラムは発想なのよ。多分。
※16:20 追記 残念ながら落ち着かなかったよ。改めて自分のテストしたコードを見てたらtxt1の宣言(Dim txt1 As InDesign.TextFrame)がなかったよ。
「VBScript(VBA)で変数を明示的に宣言すると『型が一致しません』エラーが発生する」現象は根が深そうなのでまた今度。