リンクをクリップボードにコピー
コピー完了
Win7 + Visual Studio 2015 + InDesign CS6 のときには
InDesign.Application inddApp = (InDesign.Application)Activator.CreateInstance(Type.GetTypeFromProgID("Indesign.Application"));
が成功して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を取得できるのか、どなたか教えてください。
よろしくお願いいたします。
リンクをクリップボードにコピー
コピー完了
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
のパスが正しいか確認してください。
リンクをクリップボードにコピー
コピー完了
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を無効にしてインストールするとレジストリへ必要な情報が書き込まれるはずです。
リンクをクリップボードにコピー
コピー完了
情報をありがとうございます。
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 があることは確認できています。
よろしくお願いいたします。
リンクをクリップボードにコピー
コピー完了
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-298CEABDB619}
\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\InDesign.Application.CC.2017_J\CLSID→{D2F81071-18E2-4D19-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:\ProgramData\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-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\WOW6432Node\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
これらの設定全てが必要ではない気がしますが、私の知る限りこれ以外のレジストリ項目はないと思います。
レジストリ項目がそろっているにもかかわらずエラーが出てしまうと、ちょっと手に負えません。
リンクをクリップボードにコピー
コピー完了
ありがとうございます。
すべて揃っていますね。
Visual Studio Express 2012の再インストールとInDesign CC 2017の再インストールも試しましたが、駄目です。
パソコンを完全に初期化(リアバリー)するかどうか検討します。
ありがとうございました。
リンクをクリップボードにコピー
コピー完了
自己レスです。Visual Studio Community 2017でも試しましたが、駄目でした。
リンクをクリップボードにコピー
コピー完了
経験則だけで情報をお伝えします(いろいろと書きましたが試す場合は自己責任でお願いいたします)。
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の方を選択。または直接ProgramDataのファイルを参照し参照追加。
私はこんな感じで対処します。あ、私はVSを管理者権限で起動しています。かなり昔ですがMS社員から勧められたので。
リンクをクリップボードにコピー
コピー完了
情報をありがとうございます!
そうですね。ご提示いただいたものはほとんど試してみました。
「VSを管理者権限で起動」は試していないので、試したいと思います。
リンクをクリップボードにコピー
コピー完了
このスレッドにたどり着いた方へ追加の情報です。
2018年10月にリリースされた InDesign CC 14.0 ( InDesign CC 2019 ) だとレジストリのHKEY_CLASSES_ROOT\Interfaceに必要な情報が書き込まれないため
「追加情報:型 'System.__ComObject' の COM オブジェクトをインターフェイス型 'InDesign.Application' にキャストできません。IID '{ABD4CBB2-0CFE-11D1-801D-0060B03C02E4}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外:0x80004002 (E_NOINTERFACE))。」
が発生します。インストーラー自体の問題のようで、旧バージョンの CC 2018 をインストールしてもレジストリに情報が書き込まれません(2018年11月16日現在)。
CC 2018の場合
[HKEY_CLASSES_ROOT\Interface\{ABD4CBB2-0CFE-11D1-801D-0060B03C02E4}]
@="_Application"
[HKEY_CLASSES_ROOT\Interface\{ABD4CBB2-0CFE-11D1-801D-0060B03C02E4}\ProxyStubClsid32]
@="{00020420-0000-0000-C000-000000000046}"
[HKEY_CLASSES_ROOT\Interface\{ABD4CBB2-0CFE-11D1-801D-0060B03C02E4}\TypeLib]
@="{A3BB4322-FF1B-4E64-A801-0998CF133906}"
"Version"="1.0"
を登録すればInDesign.Applicationが救済されますが、InDesign.Document等の他のInterface情報も登録しないとだめです。私の場合、正常に稼働しているPCのレジストリから必要なInterface情報を全て切り出して新PCに適用しました。
※レジストリの修正は各自の責任でお願いいたします。
リンクをクリップボードにコピー
コピー完了
ちょっと気になったので、書きますが、InDesignの場合、昔から、COMが正常にレジストリーに書き込まれないという現象は続いています。
ですが、基本的には、インストーラーを管理者権限で実行し、VisualStudioも管理者権限で動かすということで何とかしのいできたので、これが、まず前提になると思います。
そのうえで、COMが正常にアクセスできない場合には、2か所のタイプライブラリーを削除し、これも、管理者権限でInDesignを起動するということでレジストリーの再登録を行い、それでもダメな場合には、InDesignを再インストールするという方法しかないような気がします。
大体、このやり方で、今まではうまくいっていました。
ただし、1台のコンピューターにて複数のバージョンのInDesignをインストールすると、ご指摘のように、いろいろな問題が出てきて、正しい登録がされない場合があるのではないでしょうか。
一点、気になったのは、「(Type.GetTypeFromProgID("Indesign.Applicati on"));」の箇所でProgramIDを取得していますが、これは、InDesignが1バージョンしかインストールされていない場合にはいいですが、複数バージョンがインストールされている場合には、思ったバージョンのProgramIDが取得できないと思います。
なぜなら、「Indesign.Applicati on」は、VersionindepenentProgramIDだからです。ということは、すべてのバージョンが同じProgramIDになってしまう、おそらく最終にインストールしたバージョンにアクセスするようになるのではとおみいます。
バージョンを意識した場合、InDesignCC2018なら、「Indesign.Application.CC.2018」のようにバージョンを特定しないといけないと思います。
VisualStuidioからオブジェクトビューワー(64ビット)でCOM情報を見ると、インストールされた全てのInDesignのProgramIDなどが表示されますので、個別のProgramIDを確認してみてください。
最近、PhotoshpやIllustratorで、同様な問題があり、レジストリーをいじくったりしましたが、オブジェクトビューワーで見ると、正しく反映されていなかったり、何度も、PhotoshopやIllustratorを再インストールしていたら、余計おかしくなったりと、Adobe製品のCOM登録は一筋縄ではいかないですねぇ。
ちなみに、当方、Win10にてInDesignCC2017,2018,2019をインストールしていますが、珍しく、すべてのInDesignのCOMアクセスがうまくいっています。
以上、ご参考になれば。
リンクをクリップボードにコピー
コピー完了
管理者で実行という話ですが、InDesignを管理者として実行すると、レジストリが正しく登録される場合もあるようです。
リンクをクリップボードにコピー
コピー完了
すみませんが、
「InDesign.Document等の他のInterface情報も登録しないとだめです。...正常に稼働しているPCのレジストリから必要なInterface情報を全て切り出して新PCに適用しました。」
ということですが、必要なInterface情報は、どのようにすれば、わかるのでしょうか?
よろしくお願いします。
リンクをクリップボードにコピー
コピー完了
https://publishercrm.ru/oshibka-pri-rabote-s-indesign/
こちらのページの内容を参考に実施すれば解決するようです。
●InDesignを閉じて、2か所の.tlbファイルを別な名前に変更して、InDesignを管理者として実行。
●InDesignが完全に立ち上がったら、InDesignは閉じてOK。
●そのあと、うまく行かなかったプログラムを試してみてください。
こちらで書き込まれていた内容で、行き詰っていたのですが、欲しい情報の返信も止まってしまっており、完全に行き詰っていたのですが、1日今日粘ったのちこの記事で解決し、思わず声を上げてガッツポーズして、周りの社員を驚かしてしまいました。。。(苦笑
皆さんは、もう解決されているかもしれませんが、他にも行き詰った人がいて、参考になれば幸いです。
突然、失礼しました。
リンクをクリップボードにコピー
コピー完了
https://publishercrm.ru/oshibka-pri-rabote-s-indesign/
こちらの内容を参考に、解決するようです。
●InDesignを閉じる。
●2個所の .tld ファイルを、別名に変えて念のためバックアップ。
●InDesignを管理者として実行で開く。
●完全にInDesignが立ち上がったら、閉じてOK。
●これで、プログラムが正常に動くようになったか、試してみてください。
私の環境下では、3端末これで解決してくれました。
もう皆さんご存じなのかもしれませんが、他に参考になる方がいらっしゃれば幸いです。
余談です。
当初、こちらと全く同じ内容で困っており、欲しいもうひと超えの返信も止まっていたので、再インストールしかないかなとあきらめかけていました。
1日強格闘したのち、上に記載したURL記事を試したところ解決。
思わず声を上げてガッツポーズし、周りを驚かせてしまいました(苦笑
リンクをクリップボードにコピー
コピー完了
あれ。
投稿した内容が表示されなくなったので、再度投稿し直したのですが、今度は復活して重複投稿みたいになってますね。
見づらくしてしまい、失礼しました。