当excel已经打开时,将excel工作簿分配给局部variables

我想要做的是创build一个Windows应用程序,打开一些Excel工作簿,做一些计算和保存并closuresExcel文件。

我似乎无法关注其中的一个,而无需打开它们,如:

oBook1 = oBooks.Open("C:\\Reports\Excel1.xlsx"); oBook2 = oBooks.Open("C:\\Reports\Excel2.xlsx"); 

我需要能够做的是当excel文件已经打开时,将Excel1.xlsx分配给oBook1和Excel2.xlsx到oBook2。

有没有这样做? 我尝试了几种在网上find的方式,但没有任何作品

到现在为止,我只能像上面的例子一样一个一个地打开它。

谢谢。 Danut

编辑1:

我想获得一个Excel工作簿打开列表,然后从那里select一个我需要的。 我的代码是:

  Microsoft.Office.Interop.Excel.Application oExcelApp; oExcelApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); foreach (Microsoft.Office.Interop.Excel.Workbook WB in oExcelApp.Workbooks) { MessageBox.Show(WB.FullName); } oExcelApp = null; 

当我尝试分配oExcellApp时,我得到了下面的错误:“不能隐式地将types'对象'转换为'Microsoft.Office.Interop.Excel.Application'。显式转换存在(你是否缺less一个强制转换?

我究竟做错了什么?

您可以迭代工作簿集合并进行testing,看看您想要的是否已经存在; 如果没有,打开它。 这是这个的VBA版本:

 Sub Test() Dim oWb As Workbook Set oWb = GetWorkbook("name_of_file.xlsx") If oWb Is Nothing Then MsgBox "File is not open; you'll have to open it yourself." Else MsgBox "File is already open and you have a reference to it in oWb." End If End Sub Function GetWorkbook(sName) As Workbook Dim oWb As Workbook For Each oWb In Application.Workbooks 'Debug.Print oWb.Name 'Debug.Print oWb.FullName ' You could also check the full path If sName = oWb.Name Then Set GetWorkbook = oWb Exit Function End If Next End Function