###前提・実現したいこと
Excelにマクロがあります、
JavaのPOIを利用して、Excelをそのまま読み込んで新のExcelを出力する時には。
マクロがなくなてしまいました。
###発生している問題・エラーメッセージ
POIを使うと元々のマクロがなくなる
###該当のソースコード
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("old.xls"));
HSSFWorkbook wb1 = new HSSFWorkbook(fs);
FileOutputStream fileOut = new FileOutputStream("new.xls");
wb1.write(fileOut);
fileOut.close();
⇒new.xls とold.xlsを比較して、マクロがなくなる。
###試したこと
もし、あたらしいファイル作る前には、古いsheetをcloneしたら、
マクロがあるけど、sheet名は変わりました。(oldファイルにhiddenシートがあります。)
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("old.xls"));
HSSFWorkbook wb1 = new HSSFWorkbook(fs);
wb1.cloneSheet(0);
FileOutputStream fileOut = new FileOutputStream("new.xls");
wb1.write(fileOut);
fileOut.close();
@haruka-kanataさんからの修正案:
XSSFWorkbook wb= new XSSFWorkbook(new File("old.xlsm"));
FileOutputStream fo = new FileOutputStream("new.xls");
wb1.write(fo);
fo.close();
上記ような修正したら、マクロがありましたが、
非表示のシートを表示しまいました。
表示であるシート表示していません。
old 非表示ー>new表示しまう
old 表示ー>new非表示しまう
下記のように設定してもうだめです。
wb.setSheetHidden(0, false);
wb.setSheetHidden(1, true);
###補足情報(言語/FW/ツール等のバージョンなど)
Java、POI,VBA
あなたの回答
tips
プレビュー