Excel Interop - 创建可见工作簿,同时保持主要隐藏

时间:2012-11-13 17:17:36

标签: c# .net vb.net interop

假设我在WinForms应用程序中设置了以下内容:

Dim ExcelApp As Microsoft.Office.Interop.Excel.Application
Dim ExcelWorkbook As Microsoft.Office.Interop.Excel.Workbook
Dim wksDataVals As Microsoft.Office.Interop.Excel.Worksheet

ExcelApp.Visible = False

基本上,我在后台运行一个不可见的Excel实例,其中打开一个名为ExcelWorkbook的工作簿和一个名为wksDataVals的应用程序正在操作的工作表。用户正在通过用户窗体操作此工作表(和其他工作表),并根据这些操作查看一些输出。

现在,在我的表单上,我有一个按钮Show Excel Sheet,一旦用户点击它,我想在一个新的独立工作簿中向他们展示wksDataVals的副本,同时保持原始隐藏在后台中进一步的数据处理我认为我需要通过创建一个新的Excel实例来实现这一点,因为我想隐藏这个实例。

有没有比这更好的方法:

  1. 保存工作表
  2. 创建Excel的新(可见)实例
  3. 在该实例中重新打开工作表
  4. (这可能会导致工作表的问题现在只是只读,因为我希望它在另一个Excel实例中保持打开状态) - 我知道我可以通过将工作表重新保存为新名称AGAIN来克服这个问题,但这一切似乎都有点过头了。

    关于如何以最简单的方式实现这一目标的任何想法? - 也许有办法在内部保存工作簿/工作表并将其提供给新的Excel实例而不是让Excel尝试打开已保存的工作表?

    谢谢!

1 个答案:

答案 0 :(得分:0)

作为对我自己的问题的回答,如果有人在那里碰巧遇到同样的问题(请专家,如果你有更好的方法,请告诉我),我最终做的是:< / p>

  1. 创建Excel的新实例
  2. 在该实例中创建一个空白的新工作簿
  3. 从隐藏的工作表中复制我关心的范围
  4. 将它(我的情况下的值和格式是我想要的)粘贴到新工作簿上
  5. 使Excel的新实例可见
  6. 设置对新应用实例,工作簿,工作表等的引用=什么都没有,所以现在它已不再连接到我的程序。
  7. 看起来很奇怪。