型 'System._ComObject'の COM オブジェクトをインターフェイス型 'InDesign.Application' にキャストできません。

投稿者 admin on March 15, 2014

InDesign CS6用 VB.net スクリプトを Windows 8 マシンで使おうとしたところ、以下のエラーが出ました。

「型 'System._ComObject'の COM オブジェクトをインターフェイス型 'InDesign.Application' にキャストできません。」

ここでは、どのように対処したかをメモしておきます。

このエラーは、InDesign CS6をVBスクリプトから制御するためのType Library というものが、なんらかの原因により、レジストリに正しく登録されていないことに起因するようです。

修復するには、この Type Library をレジストリに登録する必要があります。

コマンドプロンプト(管理者モード)で以下を実行して登録したところ解決しました。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe "C:\ProgramData\Adobe\InDesign\Version 8.0-J\ja_JP\Scripting Support\8.0\Resources for Visual Basic.tlb"

 screenshot_command_prompt.jpg

 

下記は、Adobe Forums で見つけた書き込みの控え(英語版 CS5.5に関して)
レジストリに登録しなくてもできる模様。。。

I successfully use this code in C# 4.0 (after importing the tlb file as InDesign)

 

using  System;//System.Activator,System.Type

 

Type inDesignAppType = Type.GetTypeFromProgID("InDesign.Application.CS5.5")??Type.GetTypeFro mProgID("InDesign.Application.CS4");

InDesign.Application _app = (InDesign.Application)Activator.CreateInstance(inDesignAppType);

 

This works without running regtlib* as it doesn't rely on the CLSID

 

PSSSS: you /could/ call CLSIDFromProgID() to get the correct CLSID if you are working with win32