- PR -

JCOMについて

1
投稿者投稿内容
bonif
常連さん
会議室デビュー日: 2007/05/25
投稿数: 33
投稿日時: 2007-07-02 16:49
前回のプログラムは皆さんから教えていただいたことを参考にさせていただき、職場の先輩のアドバイスもあり無事に完成させることができました。

この調子で全部完成させることができると思ったのですが、また引っかかる部分が出てしまったので質問をさせてもらいにきました。

今回はExcel表を読み込んで、Excelマクロを実行させるというプログラムです。
JCOMというJavaでCOMを操作できるAPIを使ってプログラミングしています。

public void ExecuteMac(){
  ReleaseManager rm=new ReleaseManager();
  try {
   ExcelApplication excel=new ExcelApplication(rm);
   excel.Visible(false);
   ExcelWorkbooks xlBooks=excel.Workbooks();
   ExcelWorkbook xlbook=xlBooks.Open(マクロ記述済みExcelのアドレス);
   Object[] arg=new Object[2];
   arg[0]=Address;
   arg[1]=midFileName;
   xlbook.method("マクロ", arg);
   xlbook.Close(false,null,false);
   excel.Quit();
   excel.release();
   rm.release();
   } catch (JComException e) {
     e.getStackTrace();
   }
}

以上が書いたソースです。
通常のマクロならこれで実行できるのですが、Excel表の中で他の表を参照するという処理があった場合、「更新するかどうか」の確認用メッセージボックスが出てきてしまいます。
マクロを単独で実行した場合にはメッセージボックスが出ないので、Javaソースに問題があると思うのですが・・・・。

どうやればメッセージボックスが出ないように設定ができるのでしょうか?
御回答をよろしくお願いします。
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-07-02 18:08
エクセルの別ブックへのリンク参照されているケースででる。

あとエクセル側の問題なので別フォーラムの方にスレをたてた方がいいかもー
bonif
常連さん
会議室デビュー日: 2007/05/25
投稿数: 33
投稿日時: 2007-07-02 18:15
回答ありがとうございます。

私もExcel側の問題かと思ったんですが、

VBAでそのまま実行→メッセージボックス出力無しで、処理終了
Javaから起動してマクロ実行→メッセージボックスが途中で出力

という状況だったので、Javaの方に問題があったのではないかと思いまして・・・・
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-07-02 18:25
たぶん、エクセル単体で実行しているときは参照BOOK開いてますよね?
bonif
常連さん
会議室デビュー日: 2007/05/25
投稿数: 33
投稿日時: 2007-07-02 18:27
自己解決しました。

Excelのリンク設定で「メッセージを表示しないで、リンクの自動更新も行わない」にすると大丈夫でした。

編集中に更新されたことが不思議なわけですが・・・・。

何はともあれ、杏さんが仰ったとおり、Excelの問題だったようです。

失礼しました。
1

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