@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Jcom + Excel

1
投稿者投稿内容
あなぐら
会議室デビュー日: 2008/02/07
投稿数: 4
投稿日時: 2008-02-07 19:08
お世話になります。

import jp.ne.so_net.ga2.no_ji.jcom.excel8.*;
import jp.ne.so_net.ga2.no_ji.jcom.*;

public int ExcelMacroCall(
ActionMapping objActMapping,
ActionForm objActForm,
HttpServletRequest objHttpRequest,
HttpServletResponse objHttpResponse)
throws Exception {
ReleaseManager rm = new Releasemanger; ※
try {
ExcelApplication excel = new ExcelApplication(rm);△
excel.Visible(false);
ExcelWorkbooks xlBooks=excel.Workbooks();
ExcelWorkbook xlbook=xlBooks.Open("c:\\\\\\\\test.xls");
Object[] arg=new Object[2];
arg[0]="aaa";
arg[1]="bbb";
xlbook.method("testmacro",arg);
xlbook.Close(false,null,false);
excel.Quit();
excel.release();
rm.release();

以上のように、Excel内のマクロをコールしています。
コンパイルは通るのですが※の行で落ちてしまいます。
具体的なエラーはログファイルに吐き出されているのですが、関係ない部分で出ています。
ReleaseManager rm = null;とすれば通りますが
△の行でやはり落ちてしまいます。

またtestmacroマクロへ引数を渡す場合、どのように記述すればよろしいのでしょうか

初心者なのでご提供できる情報が少なく申し訳ないのですが
ご指南いただけますでしょうか
環境:jboss-3.2.3 j2sdk1.4.1_07 struts
a-san
ベテラン
会議室デビュー日: 2004/06/01
投稿数: 53
投稿日時: 2008-02-08 01:05
ログには何が出力されてますか?

マクロの実行は試したことがありませんが、こんな感じだと思います。
コード:
    public int ExcelMacroCall(
                ActionMapping objActMapping,
                ActionForm objActForm,
                HttpServletRequest objHttpRequest,
                HttpServletResponse objHttpResponse)
                    throws Exception {
        ReleaseManager rm = new ReleaseManager();
        try {
            ExcelApplication excel = new ExcelApplication(rm);
            excel.Visible(false);
            ExcelWorkbooks xlBooks = excel.Workbooks();
            ExcelWorkbook xlBook = xlBooks.Open("c:\\foo\\test.xls");

            Object[] arg = new Object[3];
            arg[0] = "testmacro";   // マクロ名
            arg[1] = "aaa";         // 引数1
            arg[2] = "bbb";         // 引数2
            Object ret = excel.method("Run", arg);

            xlBook.Close(false,null,false);
            excel.Quit();
        } finally {
            rm.release();
        }
    }

あなぐら
会議室デビュー日: 2008/02/07
投稿数: 4
投稿日時: 2008-02-08 09:31
a-san様
ご回答ありがとうございます。

まだReleaseManager rm = new ReleaseManager();の部分で落ちてしまいます。
(昨日書き込んだソースでは()が欠けていましたが)
ログを確認したのですが、勘違いしており何もはかれておりませんでした。
eclipseにてブレークを設定しているので上記の行でこけているのは確実なのですが…
Exceptionもcatchせずにいきなり処理が終了してしまっています。
あなぐら
会議室デビュー日: 2008/02/07
投稿数: 4
投稿日時: 2008-02-08 09:56
今デバッグ実行にて追っていったところ
ClassNotFoundException.classにて
Class Not Found(blacklist): jp.ne.so_net.ga2.no_ji.jcom.ReleaseManager
となっておりました。
importがコンパイルは通っているので問題ないと思うのですが
あなぐら
会議室デビュー日: 2008/02/07
投稿数: 4
投稿日時: 2008-02-08 18:39
a-san様のコードにて動き出しました。
特に問題の部分については変わりはないのですが謎です。

arg[0] = "testmacro"; // マクロ名
arg[1] = "aaa"; // 引数1
arg[2] = "bbb"; // 引数2
Object ret = excel.method("Run", arg);

現在この部分でマクロを実行しようとしているのですが
マクロは実行されずに終了しております。
excel.exeのプロセスが確認でき、また終了されていることも確認できました。
また特にエラーが発生しているわけでもありません。
1

スキルアップ/キャリアアップ(JOB@IT)