Workbooks.Open返回与Filename不同的文件

我有最奇怪的问题。 我有一天在笔记本电脑上写下了下面的代码,工作正常。 现在,我正在testing它在我的桌面上,它停止工作。

首先,这是我的代码

Dim oApp As Application Dim oWb As Workbook Set oApp = New Application oApp.Visible = True Set oWb = oApp.Workbooks.Open(Filename:="C:\myFile.xlsx", ReadOnly:=True) debug.print oWb.name 'returns "SOLVER.XLAM" ' "SOLVER.XLAM" is not "myFile.xlsx' debug.print oApp.Workbooks.Count 'returns 1 debug.print oApp.Workbooks(1).name 'returns "myFile.xlsx" 

现在,我知道求解器是一个插件,并在创build它时被加载到新的应用程序中,但是它如何执行这个开关? 我仍然可以得到正确的文件,但我不想冒险的巧合,我的应用程序对象中只有一个文件(或第一个文件是我加载的)

附加信息

我打算在Excel实例中执行这个macros,我希望打开一个单独的Excel实例,然后在另一个实例中打开特定的工作簿( "C:\myFile.xlsx" )。

我遇到的关键问题是,当我打开另一个实例,然后添加工作簿,并将其设置为我的oWbvariables…不知何故,当我后来调用该oWbvariables它指的是不同于我已经设置它至。

 'This is how it makes me feel: Dim x As Integer x = 5 Debug.Print x ' 12 

我想如果你只是改进你的代码,以确保你正在做你想要的东西,你会没事的。 由于目前还不清楚是否从Excel或其他MS Office应用程序中调用代码,因此我将其置于以下子集中。

运行这个如果在Excel中运行它:

 Option Explicit Sub insideXL() Dim oWb As Workbook Set oWb = Workbooks.Open("C:\myFile.xlsx", ReadOnly:=True) Debug.Print oWb.Name Debug.Print Workbooks.Count Debug.Print Workbooks(1).Name oWb.Close false Set oWb = Nothing End Sub 

如果在另一个程序中运行,请运行这个 我使用早期绑定,但是如果您愿意,也可以使用后期绑定。

 Sub outsideXL() 'make sure Microsoft Excel XX Object Library is checked in Tools > References Dim oApp As Excel.Application Set oApp = New Excel.Application Dim oWb As Excel.Workbook Set oWb = oApp.Workbooks.Open("C:\myFile.xlsx", ReadOnly:=True) oApp.Visible = True Debug.Print oWb.Name Debug.Print Workbooks.Count Debug.Print Workbooks(1).Name oWb.Close = True Set oWb = Nothing Set oApp = Nothing End Sub 

我发现这(在2007年工作):

 wb = excel.Workbooks.Open(filename, False, True) 

需要写

 excel.Workbooks.Open(filename, False, True) wb = excel.ActiveWorkbook 

为2010年