有一种解决方案,但它并不漂亮.主要问题是Word在ROT(运行对象表)中注册自己,然后其他应用程序可以轻松访问在ROT中注册的Word实例(例如VB GetObject函数所执行的操作).
所以,在你的应用程序中,你基本上必须做两件事
即使你终止了第一个实例,它也不会"追溯"地在ROT中注册自己,而其他应用程序通常不会对它的引用进行对象使用,它们会自动创建一个新实例,因为没有其他实例已经在ROT注册,然后将被注册.
也就是说,其他应用程序仍然可以使用您的Word实例,因此这种技术不是防弹的.怎么样?因为Word ALSO在ROT中注册每个加载的DOCUMENT.但这是一个很少使用的功能.
不,你无法为自己锁定一个Word实例.
但是,根据您的评论,解决问题很容易 - 不要使用ActiveDocument.您可以ActiveDocument通过调用特定的文档然后使用该变量(无论是打开现有文档还是创建新文档)来绕过使用.
例如:
Sub NewDoc()
Dim d As Document
Set d = Documents.Add(Visible:=False)
End Sub
Sub ExistingDoc()
Dim d As Document
Set d = Documents.Open(FileName:="C:\myexisting.doc")
End Sub
Run Code Online (Sandbox Code Playgroud)
在上述两种情况下,您只需使用d代替您以前使用的位置ActiveDocument.
| 归档时间: |
|
| 查看次数: |
1394 次 |
| 最近记录: |