0

感谢您花时间阅读我的问题。

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

  1. 读取特定目录中的每个 .xlsm 报告
  2. 根据不同的报告类型抓取特定字段
  3. 将字段存储在自定义类对象中
  4. 将自定义类对象存储在 List<>
  5. 阅读所有 .xlsm 报告后,从模板创建一个新的 Tally 报告
  6. 将 List<> 中每个自定义类对象的数据输出到新的 Tally 报告

这很好用。但是我添加了一个新功能,如果发生异常错误,我可以使用自定义消息框提示用户编辑或删除文档或忽略异常并继续获取剩余数据。

当用户选择“Edit”时,它调用一个动态生成新Form的类文件,在新Form中添加一个DSO Framer Control,然后根据传入的参数打开一个特定的文件。

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

“调用的目标已抛出异常。”

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

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

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

请指教。

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

4

0 回答 0