Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式同时在多个文件上运行宏_C# - Fatal编程技术网

C# 以编程方式同时在多个文件上运行宏

C# 以编程方式同时在多个文件上运行宏,c#,C#,我有一段代码,用于在excel文件上运行宏。我将文件名和位置以及宏名和位置作为输入传递到此程序。程序获取文件和宏,打开它们,运行宏并关闭文件和excel应用程序。这个很好用 现在,当我同时获得数百个这样的文件,并且所有文件都试图访问同一个宏时,问题就出现了。在大多数情况下,我会收到“来自HRESULT的COM异常:0x800A03EC”,表示宏已在使用中。我的程序处理这个异常。而在其他情况下,我没有得到任何异常,但所有excel实例都保持挂起状态 请帮助我了解是否有一种方法可以同时在多个工作簿上

我有一段代码,用于在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;

如果无法通过编程实现,请帮助我解决任何一种可能会将异常/错误抛出到程序中的问题,使其正常存在,而不是崩溃。

您是否尝试过用c语言对宏进行编码,从而使其在每个excel工作簿上运行。。我不能在程序中编写宏代码,因为我的程序是一个WCF服务,它可以为许多不同的文件和宏提供服务。因此,在程序中编写宏代码对每一个都是不可行的。您是否考虑过创建队列,以便一次只处理每种类型的1个?如何创建队列?在宏中或在调用宏的代码中?调用宏的代码-任何队列都可以,只要有一个队列,您就可以在队列中处理项目,而队列中有东西,所以每种宏类型中只有一个运行,您是否尝试过用c#来代替宏-用c#对宏进行编码,这样它就可以在每个excel工作簿上操作它。。我不能在程序中编写宏代码,因为我的程序是一个WCF服务,它可以为许多不同的文件和宏提供服务。因此,在程序中编写宏代码对每一个都是不可行的。您是否考虑过创建队列,以便一次只处理每种类型的1个?如何创建队列?在宏中或在调用宏的代码中?调用宏的代码-任何队列都可以,只要有一个队列,您就可以在队列中有内容时处理项目,这样每个宏类型中只有一个在运行