8 返信 最新の回答 日時: Mar 21, 2018 1:45 AM ユーザー:osato_reg

    Visual Studio からのCOMオブジェクト呼び出し

    SayMiwa Level 1

      Win7 + Visual Studio 2015  + InDesign CS6 のときには

       

      InDesign.Application inddApp = (InDesign.Application)Activator.CreateInstance(Type.GetTypeFromProgID("Indesign.Applicati on"));

       

      が成功してinddAppに情報を収録できるのですが、 Win10 + Visual Studio 2015  + InDesign CS6 や Win10 + Visual Studio 2015  + InDesign CC(2018)のときは

       

      「追加情報:型 'System.__ComObject' の COM オブジェクトをインターフェイス型 'InDesign.Application' にキャストできません。IID '{ABD4CBB2-0CFE-11D1-801D-0060B03C02E4}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外:0x80004002 (E_NOINTERFACE))。」

       

      となります。

       

      どうしたら、InDesign.Applicationを取得できるのか、どなたか教えてください。

       

      よろしくお願いいたします。

        • 1. Re: Visual Studio からのCOMオブジェクト呼び出し
          Omachi Most Valuable Participant

          CS6については、次のページの最後の方を確認してください。

          参照設定でエラーが出る場合の対処法

          これに加えて、バージョンを8.1に上げている場合は

          C:\ProgramData\Adobe\InDesign\Version 8.0-J\ja_JP\Scripting Support\8.0\Resources for Visual Basic.tlb

          のSupport\のあとの8.0が8.1になっているはずですのであわせて確認してください。

           

          CC2018で同様のトラブルには遭遇したことがないのですが、

          レジストリの

          \HKEY_CLASSES_ROOT\TypeLib\{76D0151D-8121-4BB3-9B29-4D137776EE97}\1.0\0\win32

          のパスが正しいか確認してください。

          1 人が役に立つと言っています
          • 2. Re: Visual Studio からのCOMオブジェクト呼び出し
            SayMiwa Level 1

            Omachiさん

             

            情報提供ありがとうございます。

            紹介いただいたページは既に閲覧済みでtlbの参照は成功しています。

             

            まだ、検証の途中ですがWin10 + Visual Studio 2015  + InDesign CC(2018)で成功したので皆さんに紹介しておきます。

            キャストができない理由はもっと深い(?別のレジストリキーとか)ところに原因があったようです。

             

            提供した情報が不足していて申し訳なかったのですが、正常に稼働していた Win7 + Visual Studio 2015  + InDesign CS6 の InDesignは Adobe Creative Cloud経由のインストールではありませんでした。今行っているのはAdobe Creative Cloud経由のインストールで、個人的にはUACが働かなく「大丈夫なのかな?」と思っておりました。

            UACを無効にしてAdobe Creative Cloud経由のインストールをしたところ期待通りにキャストできるようになりました。

            UACを有効にしているユーザーがAdobe Creative Cloud経由でインストールした場合、InDesignのアプリは起動するものの、どこかで不整合が発生しているかもしれません。

            各人の自己責任でお願いしますが、一旦UACを無効にしてインストールするとレジストリへ必要な情報が書き込まれるはずです。

            2 人が役に立つと言っています
            • 3. Re: Visual Studio からのCOMオブジェクト呼び出し
              osato_reg Level 1

              情報をありがとうございます。

               

              Windows 10 Home + Visual Studio Express 2012 + InDesign CC (2017)を使っています。

               

              UACを無効にしてAdobe Creative Cloud経由のインストールをしていますが、同じエラーで、キャストが失敗します。何か他に試せることがありましたら、アドバイスを頂けたらありがたいです。

               

              レジストリは、

              コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{31E4DE36-5972-4C7D-A781-08FDA261F9AD} \1.0\0\win32

              C:\ProgramData\Adobe\InDesign\Version 12.0-J\ja_JP\Scripting Support\12.1\Resources for Visual Basic.tlb

              となっていて、このフォルダに tlb があることは確認できています。

               

              よろしくお願いいたします。

              1 人が役に立つと言っています
              • 4. Re: Visual Studio からのCOMオブジェクト呼び出し
                Omachi Most Valuable Participant

                CC2017(12.1)のInDesign.Application.CC.2017_Jからtlbへの経路は、私の環境(64bit)では次のようになっています。

                なお、私はバージョン指定なしの"InDesign.Application"は使っていないので、

                最初と2行目のInDesign.Application.CC.2017_JのところをInDesign.Applicationに読み替えて確認してみてください。

                 

                \HKEY_CLASSES_ROOT\InDesign.Application.CC.2017_J\CLSID→{D2F81071-18E2-4D19-8FDD-298CEABDB 619}

                \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\InDesign.Application.CC.2017_J\CLSID→{D2F81071-18E2-4 D19-8FDD-298CEABDB619}

                 

                HKEY_CLASSES_ROOT\CLSID\{D2F81071-18E2-4D19-8FDD-298CEABDB619}\TypeLib→{31E4DE36-5972-4C7D -A781-08FDA261F9AD}

                HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{D2F81071-18E2-4D19-8FDD-298CEABDB619}\TypeLib→ {31E4DE36-5972-4C7D-A781-08FDA261F9AD}

                 

                \HKEY_CLASSES_ROOT\TypeLib\{31E4DE36-5972-4C7D-A781-08FDA261F9AD}\1.0\0\win32→C:\ProgramDa ta\Adobe\InDesign\Version 12.0-J\ja_JP\Scripting Support\12.1\Resources for Visual Basic.tlb

                \HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\{31E4DE36-5972-4C7D-A781-08FDA261F9AD}\1.0\0\win32→ C:\ProgramData\Adobe\InDesign\Version 12.0-J\ja_JP\Scripting Support\12.1\Resources for Visual Basic.tlb

                \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{31E4DE36-5972-4C7D-A781-08FDA261F9AD}\1.0\0\ win32→C:\ProgramData\Adobe\InDesign\Version 12.0-J\ja_JP\Scripting Support\12.1\Resources for Visual Basic.tlb

                \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{31E4DE36-5972-4C7D-A781-08FDA261 F9AD}\1.0\0\win32→C:\ProgramData\Adobe\InDesign\Version 12.0-J\ja_JP\Scripting Support\12.1\Resources for Visual Basic.tlb

                \HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Classes\TypeLib\{31E4DE36-5972-4C7D-A781-08FDA261 F9AD}\1.0\0\win32→C:\ProgramData\Adobe\InDesign\Version 12.0-J\ja_JP\Scripting Support\12.1\Resources for Visual Basic.tlb

                 

                これらの設定全てが必要ではない気がしますが、私の知る限りこれ以外のレジストリ項目はないと思います。

                レジストリ項目がそろっているにもかかわらずエラーが出てしまうと、ちょっと手に負えません。

                1 人が役に立つと言っています
                • 5. Re: Visual Studio からのCOMオブジェクト呼び出し
                  osato_reg Level 1

                  ありがとうございます。

                   

                  すべて揃っていますね。

                  Visual Studio Express 2012の再インストールとInDesign CC 2017の再インストールも試しましたが、駄目です。

                   

                  パソコンを完全に初期化(リアバリー)するかどうか検討します。

                  ありがとうございました。

                  • 6. Re: Visual Studio からのCOMオブジェクト呼び出し
                    osato_reg Level 1

                    自己レスです。Visual Studio Community 2017でも試しましたが、駄目でした。

                    • 7. Re: Visual Studio からのCOMオブジェクト呼び出し
                      SayMiwa Level 1

                      経験則だけで情報をお伝えします(いろいろと書きましたが試す場合は自己責任でお願いいたします)。

                       

                       

                      CS6をAdobe Creative Cloud経由でインストールしたときキャストができないことがありました。当然ですが、いつものレジストリは修正済みです。ですが、Adobe Creative Cloudで更新情報が表示されたのでアップデート(もちろんUACは解除済み)を実施したらキャストできるようになりました。

                       

                      それから最近のWindowsソフトは「ソフトインストールしても再起動は不要」というものが多いですが、私は不具合が起きたときとかは必ずOSの再起動をします。

                       

                      また、釈迦に説法になるかと思いますが、VSの参照設定は設定時にファイル内容を読み込んでいるようですのでInDesignを再インストールしたときには再設定するようにしています。参照設 定を削除してcom参照を追加ですね。

                      それから、Interop.InDesign.dllが作成されているのならば削除して新しくCreateされるようにしています。

                      VSの再インストールしたようですが、VSのプロジェクトが古いままだったら参照設定やInteropファイルは古いままなのでは?

                      あと、プロジェクトのクリーンも試してみてください。ただ、他のDLLも再作成されると思うのでファイル日付け管理している場合にはお気を付けください。

                       

                      我流の勝利への法則ですが、

                       

                      ・UAC無効でInDesignアンインストール。このとき環境設定は残さない(すみません、勉強不足なので環境設定を残すメリットを知りません)。

                      ・OSを再起動

                      ・UAC無効でInDesignインストール

                      ・OSを再起動

                      ・更新プログラムがある場合はUAC無効で更新プログラム適用/適用後OS再起動 ← 更新プログラムがなくなるまで繰り返し

                      ・VS プロジェクトフォルダ内のInterop.InDesign.dllを削除。obj/Debugとかobj/Releaseとかにいると思います。ファイル検索した方が早いかも。

                      ・VS プロジェクトのInDesign参照を削除

                      ・InDesign参照を追加(再設定)。このときInDesignのcomタイプライブラリが複数表示されている場合はパスがProgramDataの方を選択。または直接ProgramD ataのファイルを参照し参照追加。

                       

                      私はこんな感じで対処します。あ、私はVSを管理者権限で起動しています。かなり昔ですがMS社員から勧められたので。

                      3 人が役に立つと言っています
                      • 8. Re: Visual Studio からのCOMオブジェクト呼び出し
                        osato_reg Level 1

                        情報をありがとうございます!

                         

                        そうですね。ご提示いただいたものはほとんど試してみました。

                        「VSを管理者権限で起動」は試していないので、試したいと思います。