Effacer les filtres
Effacer les filtres

Excelのオートメ​ーションサーバーを使​用して任意の複数のシ​ートを1つのPDFに​エクスポートするには​どうすればよいですか​?

5 vues (au cours des 30 derniers jours)
Yuichi Gomi
Yuichi Gomi le 7 Jan 2020
任意の複数のシートを1つのPDFに書き出すにはどうすれば良いでしょうか。
hExcel = actxserver('Excel.Application');
hWorkbook = hExcel.Workbooks.Open(sprintf('%s',filename));
% (1)シートを1枚しか選択できない
hWorksheet = hWorkbook.Sheets.Item(1);
hWorksheet.ExportAsFixedFormat('xlTypePDF',output_filename1);
% (2)不要なシートまで書き出される
hWorkbook.ExportAsFixedFormat('xlTypePDF',output_filename2);
複数のシートを選択したり、不要なシートを削除してから書き出そうとしましたがうまくいきませんでした。
% 下記のように記述するとエラーになる
hWorksheet = hWorkbook.Sheets.Item(1:2);
% 下記のように記述しても消したつもりのシートも書き出される
Sheets = hExcel.ActiveWorkBook.Sheets;
invoke( get(Sheets,'Item',1),'Delete');

Réponse acceptée

Yuichi Gomi
Yuichi Gomi le 10 Jan 2020
不要なシートを非表示にすることで必要なシートのみ書き出しができました。
hExcel = actxserver('Excel.Application');
hWorkbook = hExcel.Workbooks.Open(sprintf('%s',filename));
% PDF出力しないシートを非表示にする
hExcel.ActiveWorkbook.Worksheets.Item('Sheet1').Visible = 0;
hWorkbook.ExportAsFixedFormat('xlTypePDF',output_filename);
hWorkbook.Saved = 1;
hWorkbook.Close;
delete(hExcel);
また、削除する場合はアラートをオフにしてから削除するか、ExcelをVisibleにしてダイアログを表示させることでうまく削除できました。
hExcel = actxserver('Excel.Application');
hWorkbook = hExcel.Workbooks.Open(sprintf('%s',filename));
set(hExcel,'DisplayAlerts',0); % 削除時のアラートをオフ
hExcel.Visible = 1; % シート削除の確認ダイアログを表示
hWorksheet = hWorkbook.Sheets.Item(1);
Sheets = hExcel.ActiveWorkBook.Sheets;
hExcel.ActiveWorkbook.Worksheets.Item('Sheet1').Delete;
hWorkbook.ExportAsFixedFormat('xlTypePDF',output_filename);
hWorkbook.Saved = 1;
hWorkbook.Close;
delete(hExcel);
今回はPDF書き出し不要なシートへの参照があったため、不要なシートを非表示にしました。

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!