4 返信 最新の回答 日時: Sep 26, 2003 9:17 PM ユーザー:(忠)

    検索・置換 結果の取得

      こんにちは。

      検索や置換で、条件に一致したかどうかの、結果の取得(戻り値というのでしょうか)は可能ですか?

      ちなみに、実際の検索や置換作業はうまくいきました。ですが、何故かSelectを使わないとエラーになり、使うと当然、作業後は該当文字列が選択状態になります。次のような感じです(一つ目 のストーリー中の文字列"abc"を"xyz"に置換)。

      MyInDesign.Select MyInDesign.ActiveDocument.Stories.Item(1).Search("abc", , , "xyz")

      よろしければ、こちらもお教え願えないでしょうか(選択状態無しに実行する方法です)。
      よろしくお願いします。
        • 1. Re: 検索・置換 結果の取得
          検索や置換の戻り値を取得することは出来ますよ。
          objIn ——サーチを宣言するモジュール何でも良いです。
          objSEARCH——結果を受け取るオブジェクトです。
          下記の構文はあなたの物を真似ましたが、この場合は戻り値は置換後の情報が返ってきます。
          Set objSEARCH = objIn.Search("abc",,,"xyz")
          objSERACH はカウントとアイテムを持っています。全アイテムをチェックしたい場合は、For Next文で回す方が良いと思います。for Each文を使用した場合、正しい結果が出ませんでした。
          • 2. Re: 検索・置換 結果の取得
            Level 1
            ありがとうございます。

            Set objIn = MyInDesign.ActiveDocument.Stories.Item(1)

            Set objSEARCH = objIn.Search("abc", , , "xyz")

            これで、選択状態でなく終了させることができました。ただ、例えば"abcabc"の置き換え後に、"xyzxyz"と該当する項目が2個あっても、

            MsgBox (objSEARCH.Count)

            は「1」でした。
            これは置き換えた個数ではなく、置き換えたかどうかの結果なのでしょうか。itemも使ってみましたが、どうもうまくいきませんでした。
            • 3. Re: 検索・置換 結果の取得
              Level 1
              久しぶりに拝見したので返事が遅くなりました。InDesignのSearchはobjInによって、
              検索結果が異なるようです。何故、異なるのかは判りません。判らない理由は関数やモジュールに関する詳細な解説が無いためです。もしかしたら、バグなのかもしれないし、そうではなくて仕様なの かもしれません。

              確認している限りではドキュメントとストーリーでは同じファイルを検索しても返値が異なりました。私のプログラムでは大抵、全検索を行っているので、ストーリーではなくドキュメントで行ってい ます。

              InDesignのモジュールを使用する場合は希望した結果が出る方法を手探りで発見する以外には無いと思われます。私はドキュメントで望む結果が得られましたが、あなたが同様であるかは残念 ながら判りません。
              頑張ってください。
              • 4. Re: 検索・置換 結果の取得
                Level 1
                ありがとうございました。

                InDesignに付属のスクリプティングガイドは、どうも解りにくいですね。

                私にもっとプログラムの知識があれば、理解しやすいのかもしれません。