【问题标题】:Excel Interop - Create visible workbook while keeping main hiddenExcel 互操作 - 创建可见的工作簿,同时保持主要隐藏
【发布时间】:2012-11-13 17:17:36
【问题描述】:

假设我在 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. 在该实例中重新打开工作表

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

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

谢谢!

【问题讨论】:

    标签: c# .net vb.net interop


    【解决方案1】:

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

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

    似乎做得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多