エクセルを受け取る時の引数の型について


kiy  2009-09-17 18:10:07  No: 70948  IP: [192.*.*.*]

お世話になります
VC++を使い始めて2週間の初心者です

HTML内に
<OBJECT ID="ExcelTest" CLASSID="CLSID:xxxxx">
</OBJECT>
として埋め込んだVC++で作成したOCXの関数に
同一ブラウザ内の別フレームに表示させているエクセルを
引数として渡し、そのエクセルを読み込んで
設定されているマクロを実行する
という処理(例:GetExcel)を作ろうとしています。

これを実現するためには、上記関数を呼び出す際に
引数として受け取る変数の型にはいったい何を
指定すればよいのでしょうか。

現在OCXの関数はJavascriptより以下のように呼び出しています
document.ocx.GetExcel(document.frame.エクセルを表示しているDIVタグのID)
としています。

引数なしのGetExcel関数を作成して
MessageBox("xxx")と記述して
GetExcel関数が呼ばれていることまでは確認しています

環境
VC++6.0
IE6.0SP2

以上です
よろしくお願いします

編集 削除
subaru  2009-09-18 11:05:54  No: 70949  IP: [192.*.*.*]

エクセルがきちんと取れているならとりあえずIDispatch*でいいと思うけど
DIVタグのIDを渡しているならただの文字列になっちゃいませんか?

編集 削除
kiy  2009-09-18 16:31:12  No: 70950  IP: [192.*.*.*]

回答ありがとうございます


>DIVタグのIDを渡しているならただの文字列になっちゃいませんか?

につきまして、
document.ocx.GetExcel(document.frame.エクセルを表示しているDIVタグのID)
ではなく
document.ocx.GetExcel(document.frame.エクセルを表示しているOBJECTタグのID)
でした。

また、ご指摘どおりVC++側でGetExcel(IDispatch* pDisp)と修正し、
JavaScriptより関数を呼んでみたところ引数の型が違う的なメッセージにより動作していません。

何か根本的に間違っている気もしますがよくわからない状態です。

編集 削除
subaru  2009-09-18 17:43:11  No: 70951  IP: [192.*.*.*]

OBJECTタグの部分は実際には mshtml.h に定義されている
IHTMLObjectElement のオブジェクトだと思うので
そのobjectプロパティがエクセルなんだと思います。
どっちにしてもエラーになるならocx側の定義が間違っている可能性があります。

編集 削除