1 Reply Latest reply: Dec 9, 2009 4:50 PM by osato_reg RSS

    スクリプトで文字列の選択について

    yasuh

      初めまして Yasuh と申します。

       

      表題の件につきまして皆様のご意見をお聞かせ願います。

       

      環境:

      Windows XP Professional SP3

      InDesign CS3 v5.0.4

      Microsoft Access 2003 SP3 VBA

      または、

      Microsoft Visual Basic .NET 2003 / .NET Framework 1.1

       

      現象:

      文字の選択と範囲の変更を行うスクリプトを検証したところ、以下の2点に付いてSelectメソッドが動作しません。(というか使い方がわかりません)

      ※VB.NET、VBA共に同様の現象になります。

       

      1 文字範囲の一括選択が出来ない

       

      Application または Document オブジェクトの Select メソッドの第一引数(SelectableItems)の説明にArray of ObjectsがあったのでCharactersコレクションのItemByRangeを指定してみましたがエラーになってしまいます。

       

      (Codeは、VBAのもので、宣言部等を省略してます)

      【Code】 ==========================

        Set A= CreateObject("InDesign.Application.CS3_J")

        A.Select A.ActiveDocument.Stories.FirstItem.Characters.ItemByRange(1, 5), idReplaceWith

      【Msg】 ===========================

      実行時エラー ‘30477’

      イベント ‘Select’ のパラメータ ‘SelectableItems’ の値が無効です。予想される値はObject, Array of Objects, idNothingEnum enumerator or idSelectAll enumeratorですが、値 (Character, Character, Character, Character, Character) を受け取りました。

      ===================================

       

      ならばとObject型の配列にCharacterオブジェクトを入れてみましたが別のエラーでだめでした。

       

      【Code】 ==========================

        Set A = CreateObject("InDesign.Application.CS3_J")

        Set C = A.ActiveDocument.Stories.FirstItem.Characters

        For X = 0 To 4

            ReDim Preserve O(X)

            Set O(X) = C(X + 1)

        Next

        myApp.Select O, idReplaceWith

      【Msg】 ===========================

      実行時エラー ‘424’

      オブジェクトが必要です。

      ===================================

       

      他にも試行錯誤してみましたがことごとくエラーになります。

       

      2 選択範囲の縮小が出来ない

       

      選択範囲の拡張(idAddTo)は出来るのですが、範囲を縮小(idRemoveFrom)が出来ません。

       

      【Code】 ==========================

        Set A = CreateObject("InDesign.Application.CS3_J")

        Set S = A.ActiveDocument.Stories.FirstItem

        '選択

        S.Characters(1).Select idReplaceWith

        For X = 2 To 5

            S.Characters(X).Select idAddTo

        Next

        '削除

        A.Selection(1).Characters(5).Select idRemoveFrom

      【Msg】 ===========================

      実行時エラー ‘25603’

      このオブジェクトタイプでは「選択範囲から削除」オプションはサポートされていません。

      ===================================

       

      となります。

       

      ガイドやネットで調べてみましたが「出来る」「出来ない」が明示された情報には辿りつけませんでした。

      別の方法で回避は可能ですが、出来ればスマートなコードにしたいのでよろしくお願いします。

        • 1. Re: スクリプトで文字列の選択について
          osato_reg Community Member

          だいぶ時間が経ってしまっていますが、同じような問題にぶつかったので、

          一応、書き残します。

           

          以下は、VB で文字を指定するスクリプトです。

          ドキュメントの最初のテキストフレームの最初の段落の3文字目から7文字目を選択します。

           

                  myDocument = myInDesign.ActiveDocument
                  Dim myStartChar, myEndChar As InDesign.Character

           

                  myStartChar = myDocument.TextFrames.Item(1).Paragraphs.Item(1).Characters.Item(3)
                  myEndChar = myDocument.TextFrames.Item(1).Paragraphs.Item(1).Characters.Item(7)

           

                  myDocument.TextFrames.Item(1).Paragraphs.Item(1).Texts.ItemByRange(myStartChar, myEndChar).Item(1).Select()