如何引用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