【发布时间】:2015-08-18 02:42:18
【问题描述】:
所以我正在使用 Access 2010 中的 VBA 函数来创建 Word.Application 对象并返回它。稍后我希望能够关闭此对象,但如果它不是由我的程序启动的 Word.Application 对象,则不会。
Public myGlobalWordApp as Object
Public newWordAppInstCreated as Boolean
Function GetWordAppInstance(Optional isVisible As Boolean = False) As Object
newWordAppInstCreated = False
On Error Resume Next
Set myGlobalWordApp = GetObject(, "Word.Application")
If myGlobalWordApp = Nothing Then
myGlobalWordApp = CreateObject("Word.Application")
myGlobalWordApp.Visible = isVisible
newWordAppInstCreated = True
End If
Set GetWordAppInstance = myGlobalWordApp
End Function
我想创建一个 CloseWordAppInstance() Sub 来关闭 myGlobalWordApp 应用程序对象,但前提是我的 VBA 代码是打开它的代码。有时我会打开另一个我正在查看的 Word 文档,但我不想关闭那个窗口。
我查看了 Word 2010 应用程序文档,发现有一个可以调用的 .Parent 方法。我想我可以使用它来查看是否可以确定我的 Access Document/Module/Application 是否创建了 Word.Application 对象,但我不知道如何引用“当前对象”或知道如何进行比较。对此步骤的任何帮助将不胜感激。
我唯一“不恰当”的做法是检查我尝试制作的布尔标志,但如果我制作第二个对象,这将不起作用。
或者,如果有人知道执行此过程的更好方法,那就太好了!
【问题讨论】:
-
我喜欢你的解决方案,但你的意思是:
but that wont work if I make a second object?在你的代码中有两个错误:1.使用myGlobalWordApp is Nothing而不是myGlobalWordApp = Nothing和2.在一行之前添加set以拥有Set myGlobalWordApp = CreateObject("Word.Application") -
如果您想创建多个实例,请使用全局集合来存储对您打开的实例的引用。
标签: ms-access vba parent-child ms-word