>>114 Excelのカスタムインターフェースを直に呼んでみた。(ヘッダがいいかげんだけど気にしないで(^^;))
XLASMP1.LZH:Excelのカスタムインターフェースを利用するサンプル(C++)
http://winscript.s41.xrea.com/upload/source/No_0011.lzh Addメソッドのプロトタイプはこんな感じ。
STDMETHOD(Add)(VARIANT Template, long lcid, IWorkbook** RHS) = 0; //'Workbook'インターフェースを'IWorkbook'に変えてある。
そうしたら、ワークブック作成が成功するのはVT_EMPTY、でなく、VT_ERROR / DISP_E_PARAMNOTFOUND、だね。
MFCのディスパッチマッパーは省略の場合途中でなくてもVT_ERRORを入れる、ということか。VBではVT_EMPTYだと。
MFCだとウィザードはCOleVariant型を引数にとるテンプレかオーバーロードを生成しているみたいだけど、生のインターフェースはVARIANT型。戻り値がHRESULTなのも違う。
これ(MFC)はカスタムインターフェース(アーリーバインディング)になってるのかな?
だから必ず同じ結果になるとは言わないけど、114、VT_ERRORで試してみて。なお、vt=VT_ERRORするだけでなくて、ちゃんと省略を表すエラーコード、scode=DISP_E_PARAMNOTFOUNDを入れないと動かないから。
で、確かに1でもできるね・・・これ何なんだろ。レガシー定数だとか。他の定数が3,4になってて1,2が抜けてるのがそれっぽい。昔の文書とかには1が書いてあるのかも。