Officeがインストールされている環境が必須だが、エクセルをPDFに保存するのは、数行でできてしまう。
//ReferenceにMicrosoft.Office.Interop.Excelを追加し、ページ上部Usingに下記を追加
using Excel = Microsoft.Office.Interop.Excel;
//エクセルを開き、Save as PDFを行うような流れ
Excel.Application xl = new Excel.Application();
Excel.Workbook wb = xl.Workbooks.Open($@"【変換するエクセルファイルの絶対パス】");
wb.ActiveSheet.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypePDF, $@"【保存するPDFファイルの絶対パス】");
wb.Close();
xl.Quit();
ここからが、詰まった点。
定期的に、タスクスケジューラでこのソースをコンパイルしたEXEを実行すると、「Exception from HRESULT: 0x800A03EC」のエラーが出力される。
要は、タスクスケジューラのユーザでは、エクセルは使えないらしい・・・???
- スタートメニューから “Start” -> “Run”で”dcomcnfg”を実行
- “Console Root” -> “Computers” -> “DCOM Config”
- リストから”Microsoft Excel Application”を見つける
- 右クリックし、”Properties”をクリック
- “Identity” タブを開く
- “The interactive user.”を選択