お世話になります
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
以上です
よろしくお願いします
エクセルがきちんと取れているならとりあえずIDispatch*でいいと思うけど
DIVタグのIDを渡しているならただの文字列になっちゃいませんか?
回答ありがとうございます
>DIVタグのIDを渡しているならただの文字列になっちゃいませんか?
につきまして、
document.ocx.GetExcel(document.frame.エクセルを表示しているDIVタグのID)
ではなく
document.ocx.GetExcel(document.frame.エクセルを表示しているOBJECTタグのID)
でした。
また、ご指摘どおりVC++側でGetExcel(IDispatch* pDisp)と修正し、
JavaScriptより関数を呼んでみたところ引数の型が違う的なメッセージにより動作していません。
何か根本的に間違っている気もしますがよくわからない状態です。
OBJECTタグの部分は実際には mshtml.h に定義されている
IHTMLObjectElement のオブジェクトだと思うので
そのobjectプロパティがエクセルなんだと思います。
どっちにしてもエラーになるならocx側の定義が間違っている可能性があります。
ツイート | ![]() |