【问题标题】:Word VBA: How to know if the actual save operation is completed?Word VBA:如何知道实际保存操作是否完成?
【发布时间】:2010-12-28 17:15:11
【问题描述】:

我在带有大型 Word 文档的 Word VBA 中的 Document.SaveAs 方法遇到问题,似乎保存操作是异步的,即。调用.SaveAs 后它会立即返回,但是对于大型 Word 文档,实际保存操作可能尚未完成,并且正在另一个线程中进行。

所以我想问的是,是否有办法检测实际保存操作是正在进行还是完成?

我用Delphi调用Word的自动化接口,如果讨论这个问题有什么意义,但我不这么认为?

【问题讨论】:

  • 大家好,看来我的问题与SaveAs方法或Saved属性有关,但调用Range.InsertFile(aFileName)后,aFileName将被解锁,你不知道什么时候解锁……
  • 但这与您最初的问题无关。也许您可以更改您的问题,使其与您接受下面其他答案的原因相匹配l
  • @Otaku,感谢您的帮助。您建议检查 Saved 属性,但根据我的经验,它不起作用,正如 StevenzNPaul 的回答所解释的那样,即使 实际 保存工作尚未完成,Saved 属性也会变为 TRUE。 StevenzNPaul 的回答解释说不可能“知道实际的保存操作是否完成”,所以我接受了他的回答。我希望这现在很清楚。谢谢大家!
  • 我仍然不确定这与 InsertFile 有什么关系。
  • 看看这个线程 - 它会告诉你如何使 Save 方法同步 - social.msdn.microsoft.com/Forums/en-US/vsto/thread/…

标签: vba automation ms-word


【解决方案1】:

办公自动化的 saveas 是一个进程外调用,所以它总是在一个单独的进程上运行,因此它本质上是异步的。

除非给出异常,否则实际上无法捕获通知。

【讨论】:

    【解决方案2】:

    是:

    If ActiveDocument.Saved = True then
    /* 'do something */
    End If
    

    如果文档之前没有应用过.SaveAs,您也可以检查.Path(即If ActiveDocument.Path <> "" Then ....

    请注意,后台保存是异步的,而不是您手动调用的保存 - 由 .Saved 检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 2011-09-12
      • 2014-05-08
      相关资源
      最近更新 更多