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

6 visualizzazioni (ultimi 30 giorni)
Yuichi Gomi
Yuichi Gomi il 7 Gen 2020
Risposto: Yuichi Gomi il 10 Gen 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');

Risposta accettata

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

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!