2012-11-13 27 views
0

假设我有以下设置在一个WinForms应用程序:Excel的互操作 - 创建可见的工作簿,同时保持主藏

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. 创建
  3. 重新开放在该实例的工作表
的Excel新的(可见)实例

(这可以创建一个问题,工作表现在只是只读,因为我希望它保持打开在其他Excel实例) - 我知道我可以通过重新保存工作表作为一个新的名称再次克服这个问题,但这一切似乎都是过度的。

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

谢谢!

回答

0

作为我自己的问题的答案,以防万一有人碰巧遇到同样的问题(请专家,如果你有更好的方法,请告诉我),我最终做的是:

  1. 创建一个Excel
  2. 一个新的实例在该实例创建一个新的空白工作簿
  3. 复制的范围我关心从隐藏的工作表
  4. 粘贴它(价值和格式在我的情况是所有的我想)到新的工作簿
  5. 使Excel的新实例可见
  6. 设置对新应用实例,工作簿,工作表等的引用=无,因此现在它不再连接到我的程序。

看起来很奇妙的做法。

相关问题