如何引用Word vba之前打开的工作簿?

在MS Word上使用VBA有一个微妙的问题。 我试图参考一些在启动之前打开的工作簿。

从一个简短的testingmacros里面简单的

MsgBox Workbooks.Count 

虽然打开了3个(空)工作簿,但它们的值为0。 Word启动打开3个工作簿时,我得到正确的值3。

如何解决这个问题?

jm2p Zeph

这是因为你必须得到Excel的运行实例,而不是创build一个新的

下面的代码设置一个Excel应用程序对象,试图首先获取任何正在运行的实例,然后,如果没有Excel会话已经运行,打开一个新的:

 Option Explicit Sub LateBindingExcel() Dim xlApp As Object Set xlApp = GetExcelObject MsgBox xlApp.Workbooks.count End Sub Function GetExcelObject() As Object Dim excelApp As Object On Error Resume Next Set excelApp = GetObject(, "Excel.Application") '<--| try getting a running Excel application On Error GoTo 0 If excelApp Is Nothing Then Set excelApp = CreateObject("Excel.Application") '<--| if no running instance of Excel has been found then open a new one Set GetExcelObject = excelApp '<--| return the set Excel application End Function 

看一下这个:

 'Option Explicit 

'选项显式

 Sub check() Set objExcel = GetObject(, "Excel.Application") Set wbs = objExcel.Workbooks Debug.Print wbs.Count Set objExcel = Nothing Set wbs = Nothing End Sub