【问题标题】:An opened document which isn't found in Word.Application.Documents but still locked out?在 Word.Application.Documents 中找不到但仍被锁定的已打开文档?
【发布时间】:2014-08-06 18:25:53
【问题描述】:

我做了一些 Word 自动填充一些用作模板的 Word 文档中的空白。

一个模板的使用频率高于其他模板,这会导致错误,因为它被锁定并且 Word 无法打开它,但我希望以只读方式打开它。

打开文档

do until lole_word.Documents.Count = 0
    lole_word.Documents[1].Close(lole_word.SaveOptions.wdDoNotSaveChanges)
loop

boolean lb_readOnly
lb_readonly = true
lole_word.Documents.Open(as_fileIn, lb_readOnly)

问题是模板文档只打开一次,没有任何缺陷。但是当必须重复使用相同的模板时,虽然lole_word.Documents.Count总是返回0,但当Word打开之前使用的模板时,它被锁定了,最后Word出现询问我是否要以只读方式打开它模式。

我希望避免这种烦恼,只需以只读模式打开文件,因为一旦填写,它将保存在其他地方。

我的问题是,即使我通过将第二个参数设置为true 来指定以只读模式打开,Word 似乎并没有看到这种方式,仍然会弹出他的File Already in Use by Another User 对话框,然后是我的应用程序失去对 Word 的控制并崩溃。

【问题讨论】:

    标签: readonly ole powerbuilder word-automation file-in-use


    【解决方案1】:

    我们遇到了类似的问题,我希望我能记住我们是如何解决它的。我们可能使用了 Quit 命令。我知道我们还在独占模式下尝试了 FileOpen(无意使用该文件)并立即关闭它。如果我们得到一个文件锁定的返回码,我们会提示用户首先关闭 excel,因为有时他们会在 OLE 之外打开程序。我知道这不是您要寻找的东西,但希望它能带您到某个地方。我记得这是一个间歇性问题,在某些情况下用户必须打开任务管理器并终止无关的 excel 进程。

    我隐约记得锁定是由文件系统而不是 Word 引起的,因为我们也是以只读方式打开的。

    【讨论】:

    • 几年前我做了类似的事情时,我制作了原始模板文件的临时副本,然后打开了副本。一旦文本在副本上被更改,它就会被保存并移动到一个永久位置。这避免了模板的任何文件争用问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多