将打开的工作簿从一个Excel实例传输到另一个

时间:2017-10-09 09:39:04

标签: excel excel-vba vba

是否可以将打开的工作簿转移到另一个Excel实例?即“重新养育”一个没有关闭和重新开放的开放式工作簿?

我想这样做的原因是为特定工作簿设置单独的实例。当该工作簿打开时,它可以创建一个新的Excel实例,然后我希望以某种方式将该工作簿添加到其他应用程序Workbooks集合中,同时将其从原始文件中删除。

关键在于我可以运行模态表单应用程序,同时仍然保留使用Excel的能力。例如,我想以编程方式将数据复制到剪贴板,同时让用户将其粘贴到另一个工作簿中。

将原始表单应用程序设置为非模态不是解决方案,因为这是一项要求(我们已经详细说明了将常规用户排除在工作表之外并仅使用密码关闭表单。)

对于上下文,我尝试使用相同的工作簿打开另一个实例,然后关闭,但这有新问题,新打开的工作簿是只读的。 (还有其他原因导致效果不佳。)

1 个答案:

答案 0 :(得分:0)

如下面的代码所示,您可以在另一个Excel实例中访问工作簿并对其进行操作。

Dim xlApp As Excel.Application
Dim Wb As Workbook
Dim xlApp2 As Excel.Application
Dim Wb2 As Workbook

Set Wb = ActiveWorkbook
Set xlApp = Wb.Parent

Set xlApp2 = New Excel.Application
Set Wb2 = xlApp2.Workbooks.Open("E:\My Documents\Weekly Report.xlsx")

Wb.Worksheets("Target").Cells(1, 1).Value = Wb2.Worksheets(1).Cells(4, 1).Value