我可以将objDoc
指定为ObjWord
的文档(Set objDoc = oDoc.Object
之后)吗?
我的代码如下所示:
'Declaration
Dim oDoc As OLEObject
Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim WS as Worksheet
Dim strOdoc as String
'Initialization
Set WS = Whorksheets("Sheet1")
strOdoc = "WordDoc"
Set objWord = New Word.Application
'Set objWord = GetObject(, "Word.Application")
'I need using GetObject to be able to made the activated OLEDocument, invisible.
'And Need Set objWord = New Word.Application to be able
'to EndTask the WINWORD.EXE with objWord.Quit.
objWord.Visible = False
Set oDoc = WS.OLEObjects(strOdoc)
oDoc.Activate
Set objDoc = oDoc.Object
'I need here Add the objDoc to the objWord
- 我需要
objDoc
是objWord
对象的文档,该对象已被objWord.Visible = False
隐藏(我不能使用变量声明Dim objDoc As objWord.Document
)。 - 我需要隔离
objWord
,因为使用objWord.Quit
,它不得尝试关闭其他Word文档。(这里我用了Set objWord = New Word.Application
) - 我需要使用
GetObject
语句才能使激活的 OLED 不可见。 - 并且需要设置
objWord = New Word.Application
才能结束任务 赢.EXE与objWord.Quit
. 但是,如果没有打开其他Word文档,如何整合上述两个优点:1)使用OLEObjectDocument不可见的工作和2)执行WINWORD的结束任务.EXE呢?
请采取更合乎逻辑的循序渐进的方法。请记住,您需要引用Microsoft Word 对象库(VBE>工具>引用)。
现在,您可以创建 Word 应用程序的实例。默认情况下,它是不可见的。您可以使用它并退出它,而不会影响可能同时运行的 Word 的任何其他实例。这部分代码在逻辑上是正确的,但建议的代码是Set objWord = CreateObject("Word.Application")
。这将创建一个新实例。我不确定Set objWord = New Word.Application
是否可能做同样的事情,但你不应该同时需要两者。
现在,您可以打开文档。使用Documents.Open
方法执行此操作。文档的数据类型Word.Document
,而不是 OLEObject。此文档将在窗口中打开,您可以使该窗口不可见。将其称为objWord.Windows(1)
或objWord.ActiveWindow
。也许屏幕上会有一个闪烁,你可能会用objWord.ScreenUpdating = False
来对抗。
完成这些步骤后,您将拥有一个普通的Word文档,在其自己的窗口中不可见,在Word实例中打开,其中没有打开其他文档。您可以操作该文档,将其关闭,然后退出objWord
。