COM オブジェクトと通信する Excel プラグイン (XLL) に取り組んでいます。そのため、XLOPER と VARIANT の間でマーシャリングを行う必要があります。私はこれのほとんどを機能させましたが、配列は間違いなく苦痛です。1 次元配列と 2 次元配列をサポートする必要があります。
誰かがすでにこれに対処しなければならなかったと思います。VARIANT、SAFEARRAY、および XLOPER (および XLOPER12) の処理を簡素化する最善の方法は何ですか?
COM オブジェクトと通信する Excel プラグイン (XLL) に取り組んでいます。そのため、XLOPER と VARIANT の間でマーシャリングを行う必要があります。私はこれのほとんどを機能させましたが、配列は間違いなく苦痛です。1 次元配列と 2 次元配列をサポートする必要があります。
誰かがすでにこれに対処しなければならなかったと思います。VARIANT、SAFEARRAY、および XLOPER (および XLOPER12) の処理を簡素化する最善の方法は何ですか?
これには、独自のマーシャリング コードを手作業で作成する必要がありました。これを処理するための自由に利用できるライブラリはありませんでした。XLW は、プラグイン全体をラップするためのものです。これは私にとっては選択肢ではありませんでした。
結局、xloper とバリアントのドキュメントを調べて、それらを相互にマップする方法を理解するのに、多くの時間がかかりました。
好奇心旺盛な人のために:
xloper(12) の配列:
バリアントの配列:
このマーシャリングに関するその他のヒント:
boost::numeric_cast
それを助けます。私は XLL Plus を使用しています (費用) http://www.as-ltd.co.uk/xllplus/default.htm
XLW (オープンソース) もあります http://xlw.sourceforge.net/
そしておそらく私が気づいていない他の人