3 返信 最新の回答 日時: Oct 13, 2006 6:22 PM ユーザー:(fg_tak)

    ページ参照置換

      環境:WinXP InDesignCS2 VB6.0

      質問させて頂きます。

      参照ページの処理に困っています。
      検索で代入したオブジェクトから、そのオブジェクトがDocument内の何ページにあるかを調べたいと考えています。
      下記のobjTargetからページを調べるにはどうすればよいでしょうか?

      Set objTarget = objDoc.Search("aaa", , , , , "")

      objTargetは何ページ目にあるか

      どなたかご存知の方、宜しくお願いします。
        • 1. Re: ページ参照置換
          Level 1
          objTarget.Parentを辿り、objTarget.ParentのTypenameを取得し、それに合う条件でPagesからNameプロパティを参照する方法が挙げられます。
          直接取得する方法は無いかも…
          私も以前、試みましたが、表内の文字にヒットした場合は親が変わってしまうので、コードが複雑になってしまいました。(汗
          • 2. Re: ページ参照置換
            Level 1
            当方、Macを使っていますのでVBではないのですが、Javascriptだとこんな形でページを調べられます。

            #target indesign
            var objDoc = app.activeDocument;
            var objTarget = objDoc.search("aaa");
            var strArray = new Array();
            for (var i = 0 ; i < objTarget.length ; i++){
            var tempTextFrame = objTarget[i].parentTextFrames[0];
            app.selection = tempTextFrame;
            var mySpread = app.activeWindow.activeSpread;
            for (var j = 0 ; j < mySpread.pages.length; j++){
            for (var k = 0 ; k < mySpread.pages[j].allPageItems.length; k++){
            if (mySpread.pages[j].allPageItems[k] == tempTextFrame){
            strArray[i] = mySpread.pages[j].name;
            }
            }
            }
            }
            alert(strArray);

            最後のalertで、調べたページ番号を表示しています。

            searchメソッドの戻り値はTextなどの配列ですので、parentTextFrameを選択してactiveSpreadからページを調べています。
            TextFrameを選択するとSpread全体がactiveになってしまうので、activePageからたどることができず、ちょっと面倒な形になってしまっています。
            • 3. Re: ページ参照置換
              Level 1
              流星ちゃんさん、by鴨さん、ありがとうございます。

              >objTarget.Parentを辿り、objTarget.ParentのTypenameを取得し、それに合う条件でPagesからNameプロパティを参照する方法が挙げられます。

              試してみました。私の場合、表内ではなかったので効率よく出来ました。
              確かに表内の文字だと複雑になりますねw

              >searchメソッドの戻り値はTextなどの配列ですので、parentTextFrameを選択してactiveSpreadからページを調べています。
              TextFrameを選択するとSpread全体がactiveになってしまうので、activePageからたどることができず、ちょっと面倒な形になってしまっています。

              選択させて、activePageから取得するとは思いつかなかったです。
              大変参考になりました。

              非常に参考になりました。
              ありがとうございます。