Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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#DSO帧控制异常_C#_Excel_Dsoframer - Fatal编程技术网

调用的目标已引发C#DSO帧控制异常

调用的目标已引发C#DSO帧控制异常,c#,excel,dsoframer,C#,Excel,Dsoframer,感谢您抽出时间阅读我的问题 我正在开发一个小型应用程序来执行以下操作: 读取特定目录中的每个.xlsm报告 根据不同的报表类型抓取特定字段 将字段存储在自定义类对象中 将自定义类对象存储在列表中 读取所有.xlsm报告后,从模板创建新的理货报告 将列表中每个自定义类对象的数据输出到新的计数报告 这很有效。但是我添加了一个新功能,这样,如果发生异常错误,我可以使用自定义消息框提示用户编辑或删除文档,或者忽略异常并继续获取剩余数据 当用户选择“编辑”时,它调用一个类文件,该类文件动态生成一个新表单,

感谢您抽出时间阅读我的问题

我正在开发一个小型应用程序来执行以下操作:

  • 读取特定目录中的每个.xlsm报告
  • 根据不同的报表类型抓取特定字段
  • 将字段存储在自定义类对象中
  • 将自定义类对象存储在列表中
  • 读取所有.xlsm报告后,从模板创建新的理货报告
  • 将列表中每个自定义类对象的数据输出到新的计数报告
  • 这很有效。但是我添加了一个新功能,这样,如果发生异常错误,我可以使用自定义消息框提示用户编辑或删除文档,或者忽略异常并继续获取剩余数据

    当用户选择“编辑”时,它调用一个类文件,该类文件动态生成一个新表单,向新表单添加一个DSO Framer控件,然后根据传入的参数打开一个特定文件

    当我第一次收到消息框并选择“编辑”时,它将正确打开新表单并显示.xlsm报告供我编辑。单击“关闭”后,它将保存更改并继续处理。如果我第二次收到消息框并选择“编辑”(无论是否针对相同的.xlsm文件),我收到一个异常:

    “调用的目标已引发异常。”

    我想可能是因为文档已经用“Microsoft.Office.Interop.Excel”打开了,但是第一个.xlsm文件将打开,即使它是用“Microsoft.Office.Interop.Excel”打开的。我确实注意到,在调用Excel.Application.Quit()函数并对ExcelApp对象使用Marshal.ReleaseComObject之后,在使用“Microsoft.Office.Interop.Excel”时,我仍然在任务管理器中运行Excel进程

    如果我完成关闭应用程序并重新打开它,我可以再次“编辑”提示我的消息框的第一个文档

    当我选择“编辑”选项时,我所需要做的就是暂停正在运行的代码,显示供用户编辑的文件,一旦他们完成编辑,继续再次运行代码

    请告知


    我也试着在这里发布代码,它说我用了太多的行。共享我所有代码的最佳方式是什么?

    DsoFramer早就停止使用了。它与最新的Office版本不兼容,2007已经很麻烦了。你需要停止使用它。更多信息。我知道它已经停产,并且有很多问题。我能够使它工作在一个项目中测试它只使用DSO框架。我不介意放弃它。如果能对它进行调整,让它工作起来,那就太好了。这将使我的下一个项目更容易。您是否有任何其他引用可用于替代DSO Framer?