我有一段代码用于在excel文件上运行宏。我将文件名和位置以及宏名称和位置作为此程序的输入传递。程序获取文件和宏,打开它们,运行宏并关闭文件和excel应用程序。这很好。
现在,当我同时收到数百个这样的文件时,问题就出现了,所有人都试图访问同一个宏。在大多数情况下,我得到'来自HRESULT的COM异常:0x800A03EC',表示宏已经在使用中。我的程序处理此异常。在其他情况下,我没有得到任何例外,但所有excel实例只是保持挂起状态。
请帮助我理解是否有办法在多个工作簿上同时运行相同的宏以及如何以编程方式实现此目的。提供我的代码示例。
Microsoft.Office.Interop.Excel.Workbooks oBooks = oExcel.Workbooks;
Microsoft.Office.Interop.Excel._Workbook oBook1 = null;
oBook1 = oBooks.Open(fileFullPath, 0, false, 5, Request.Password, "", true,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false,
false, 0, true, false, false);
oExcel.Run(....);
oBook1.Save();
oBook1.close;
oExcel.quit;
如果以编程方式无法实现这一点,请帮助我解决任何将异常/错误返回给程序的变通方法,使其优雅而不仅仅是崩溃。