Dim objWord ' As Word.Application Dim objWindow ' As Word.Window On Error GoTo NoWordOpened Set objWord = GetObject(, "word.application")
For Each objWindow In objWord.Windows Debug.Print objWindow.Document.FullName Next NoWordOpened: '完毕你注意到我注释了变量声明的类型,程序中采用了后期绑定类型的方式,让Automation 自动处理类型。 如果你在项目文件中引入Microsoft Word Object Library ...我的是10.0版本(OfficeXP,Office 2000是8.0),则可以去掉注释 GetObject 是一种获取运行中的Class的Instance的方法。 你也可以用CreateObject("Word.application")或者 new 一个 Word.Application 来创建一个新的Instance(打开一个word),然后在objWord.Windows中你可以得到包括新打开的instance在内的所有word。呵呵,我不知道有没有别的对象可以列举出所有的words。所以用了Word.Application.Windows 这个对象层次,而不是Word.Windows。 在对InternetExplorer进行同样操作的时候有ShellWindows,Word没见到。 姑且用上面的方法吧,可以根据需要选择前期绑定或者后期绑定方式。
还有一个方法是获取所有已经打开的Word的Instance,然后判断你的文件是否在其中。
请问如何获取所有已经打开的Word的Instance???
Dim objWindow ' As Word.Window
On Error GoTo NoWordOpened
Set objWord = GetObject(, "word.application")
For Each objWindow In objWord.Windows
Debug.Print objWindow.Document.FullName
Next
NoWordOpened:
'完毕你注意到我注释了变量声明的类型,程序中采用了后期绑定类型的方式,让Automation 自动处理类型。
如果你在项目文件中引入Microsoft Word Object Library ...我的是10.0版本(OfficeXP,Office 2000是8.0),则可以去掉注释
GetObject 是一种获取运行中的Class的Instance的方法。
你也可以用CreateObject("Word.application")或者 new 一个 Word.Application 来创建一个新的Instance(打开一个word),然后在objWord.Windows中你可以得到包括新打开的instance在内的所有word。呵呵,我不知道有没有别的对象可以列举出所有的words。所以用了Word.Application.Windows 这个对象层次,而不是Word.Windows。
在对InternetExplorer进行同样操作的时候有ShellWindows,Word没见到。
姑且用上面的方法吧,可以根据需要选择前期绑定或者后期绑定方式。