QA@IT

ExcelのEMBED()式について

8576 PV

以下のソフトウェアがインストールされた環境で、
AutoCADの埋め込みオブジェクトが存在するExcelブック(xls形式)を開き、
=EMBED("AutoCAD.Drawing.15","")という式で表現されている、
埋め込みオブジェクトをダブルクリックしました。

AutoCAD LT 2015が起動し、該当のオブジェクトが読み込まれることを期待したのですが、
注意メッセージ:このオブジェクトの作成元アプリケーションを起動できません。
が表示され、期待通りの動作とはなりませんでした。

環境:
Windows7
Excel2010
AutoCAD LT 2015
AutoCAD 2015
AutoCAD 2016
AutoCAD 2017

※ExcelにAutoCADオブジェクトを埋め込んだ環境は不明です。

もし、なんらかの設定を変更することで任意のアプリケーションで開けるのであれば、
情報をいただければと思います。

EMBEDタグの第一引数はProgIDで、ProgIDからCLSIDを参照して、CLSIDのレジストリ値を変更する
ことでなにかできる、等。

回答

自己解決です。VBAにて下記コードを実行し、progIDを確認できました。

    Dim o As OLEObject
    Dim s As String
    Set o = Worksheets("Sheet1").OLEObjects("Object 1")
    s = o.progID
    MsgBox s

progIDは"AutoCAD.Drawing.15"でした。

レジストリエディタで、
HKEY_CLASSES_ROOT\AutoCAD.Drawing.15\CLSID の値を確認し、
HKEY_CLASSES_ROOT\[CLSID]\LocalServer32 の値を確認します。
この値のアプリケーションでオブジェクトを開こうとします。

この値が不正の場合、値を変更するか、
HKEY_CLASSES_ROOT[CLSID]\AutoConvertTo キーを作成し、
正常に起動するアプリケーションのCLSIDを設定します。
(アプリケーションのCLSIDはprogID等から参照して調べる・・・)

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。