kmと申します。
Webアプリで、複数のExcelをWebサーバ側で結合して、最終的に画面からダウンロードするような仕組みを作ろうとしています。
あれこれ調べてみましたが、複数のExcelの結合自体をjavaから実行することが困難そうなので(POIも使えない環境です)、Excelマクロを使って、結合することにしました。
こちらの記事を参考にさせていただいて、どうにかjavaからExcelマクロを実行できるようにしました。
(jcomの作者様がアドバイスされているだけあって、当該方式ですでに実装はし、ある程度確認ができています。)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=43458&forum=12
ただし、java側から引数(Excelのパス)を渡したものの、Excelマクロでどのように受け取ればよいのかよくわからず、javaからexcelのシートおよびセルを指定する形で引数を渡す、何ともチープな作りとなってしまっています。。。
本当は以下のように、argにそれぞれ引数を設定して、"Run"するときにExcel側に引数が渡ると思うのですが。
Object[] arg = new Object[3];
arg[0] = "testmacro"; // マクロ名
arg[1] = "aaa"; // 引数1
arg[2] = "bbb"; // 引数2
Object ret = excel.method("Run", arg);
素人考えで、Excelのマクロ側で引数が受け取れるように、プロシージャのSub マクロ名("ここに引数を指定")してみましたが、今度はjava側でマクロを認識せず、動きませんでした。
(引数指定のExcelマクロは、Excelのマクロ表示上からも消えることから、javaから参照できないということなんでしょうかね)
どのようにExcelマクロを記述すれば引数を受け取れるか、ご存知でしたらアドバイスいただけると助かります。