我用C#寫了一個執行檔,功能是建立一個EXCEL檔案並儲存在Server 2019的某個目錄中,我是用Microsoft.Office.Interop.Excel這個物件的Workbook.SaveAs這個方法來儲存,奇怪的是直接手動啟動執行檔(*.exe),檔案可順利儲存,但放在工作排程中,設定[不論使用者登入與否均執行]及[以最高權限執行],但都會發生以下錯誤:
System.Runtime.InteropServices.COMException (0x800A03EC): 發生例外狀況於 HRESULT: 0x800A03EC
於 Microsoft.Office.Interop.Excel._Workbook.SaveAs(Object Filename, Object FileFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMru, Object TextCodepage, Object TextVisualLayout, Object Local)
如果設定為[只有使用者登入時才執行]且不要登出,就不會發生錯誤,檔案可順利儲存,如果把相同的程式放在Server 2008 R2也不會有問題,在網上爬了好久都找不到答案,請各位前輩高手幫幫忙,解答一下我遇到的這個棘手的問題,小弟先多謝了~
當執行工作時,請使用下列使用者帳戶,你是用哪個?
另外你有使用過EPPlus這個套件過嗎,之前自動化我都是用這個做的,測試無登入是正常的
另外可以參考一下其他人說法
https://stackoverflow.com/questions/28323272/excel-interop-not-working-on-user-logout
(我記得沒錯的話,office內建套件無法尚未初始化(未登入帳戶)的情況下執行,如果你可以的話將執行者改成Administator看看)