我有这段代码:
using Excel = Microsoft.Office.Interop.Excel;
var excelApp = new Excel.Application();
if (CurrentWorkbook.Version == "Release")
{
}
else
{
if (File.GetLastWriteTime(CurrentWorkbook.DataPath + CurrentWorkbook.FileName + ".xlsm").Date != DateTime.Today)
{
var MRPData = excelApp.Workbooks.Open(@"H:\@Business_Reporting_Today\MRP\Blank MRP Workbook.xlsm", 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
}
}
然后在我的项目中我有:
if (CurrentWorkbook.Version == "Release")
{
}
else
{
excelApp.DisplayAlerts = false;
MRPData.Close(0);
Marshal.FinalReleaseComObject(MRPData);
excelApp.Quit();
Marshal.FinalReleaseComObject(excelApp);
}
然而,由于我在一个if代码块中声明了MRPData,当然,在后面的代码块中,“当前上下文中不存在”。我试图用以下方法将变量从代码块中声明出来:
var MRPData = new Excel.Workbook();
这消除了编译错误,但给出了一个运行时错误,
使用CLSID检索组件的COM类工厂 {00020819-0000-0000-C000-000000000046}由于以下原因而失败 错误:80040154未注册类(HRESULT异常: 0x80040154(REGDB_E_CLASSNOTREG))。'
如何修复此问题,以便我可以在if代码块之外声明它?