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

10 visualizaciones (últimos 30 días)
Yuichi Gomi
Yuichi Gomi el 7 de En. de 2020
Respondida: Yuichi Gomi el 10 de En. de 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');

Respuesta aceptada

Yuichi Gomi
Yuichi Gomi el 10 de En. de 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書き出し不要なシートへの参照があったため、不要なシートを非表示にしました。

Más respuestas (0)

Categorías

Más información sobre MATLAB の COM オブジェクト en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!