Skip navigation
yasuh
Currently Being Moderated

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

Jun 26, 2009 1:23 AM

初めまして 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’

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

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

 

となります。

 

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

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

 
Replies
  • Currently Being Moderated
    Dec 9, 2009 4:50 PM   in reply to yasuh

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

    一応、書き残します。

     

    以下は、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(my StartChar, myEndChar).Item(1).Select()

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points