2 返信 最新の回答 日時: Oct 2, 2016 6:26 PM ユーザー:羽のばし

    ページにあるオブジェクトを名前でSetできない

    羽のばし Level 1

      OS:Windows7

      InDesign CC2015

      Microsoft Access2013、VBA

       

      たびたびお世話になります。

      これまでAccess2013からInDesignCS4へ自動組版していたものを

      InDesignCC2015へ移植しようとしています。

      CS4では問題なく動いていたスクリプトですが、CC2015で動かない部分があります。

       

      InDesignドキュメントに既にTestFrameが配置してあり、

      スクリプトラベルで「text01」と設定しています。

      それをSetで取得しようとすると実行時エラーで

      「要求されたコレクションのメンバーは存在しません」になります。

       

      サンプルコード

      Set f01ind1 = CreateObject("InDesign.Application")

      Set f01doc1 = f01ind1.Documents.Item(1) ←これはSetできる

      Set f01pag1 = f01doc1.Pages.Item(1) ←これはSetできる

      Set f01lay1 = f01doc1.Layers.Item("文字") ←これはSetできる

       

       

      Set f01txt1 = f01lay1.PageItems.Item("text01") ←エラー

      Set f01txt1 = f01pag1.PageItems.Item("text01") ←エラー

      Set f01txt1 = f01lay1.TextFrames.Item("text01") ←エラー

      Set f01txt1 = f01pag1.TextFrames.Item("text01") ←エラー

       

      Set f01txt1 = f01lay1.PageItems.Item(1) ←エラー

      Set f01txt1 = f01pag1.PageItems.Item(1) ←エラー

      Set f01txt1 = f01lay1.TextFrames.Item(1) ←エラー

      Set f01txt1 = f01pag1.TextFrames.Item(1) ←エラー

       

      '以下の方法ではSet可能。

      For Each f01xxx In f01lay1.PageItems

           If f01xxx.Label = "text01" Then

                Set f01txt1 = f01xxx

           End If

      Next f01xxx

       

      ループせずにスムーズにオブジェクトをSetする方法はないでしょうか。

      よろしくお願いします。