Documents.Close makes Word visible

本文关键字:visible Word makes Close Documents | 更新日期: 2023-09-27 18:31:16

我一直在尝试解决此问题,但尚未找到。在调用Documents.Close()时,用visible = false打开的 Word 变得可见。

这是我的关闭语句(文档已经保存,因此无需再次保存):

    WordApp.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges,
    Word.WdOriginalFormat.wdOriginalDocumentFormat);

Documents.Close makes Word visible

你可以

WordApp.Quit()

Office 应用仍遵循 MDI 方法:运行 1 个应用,在该应用中可以打开 1 个或多个文档。

很容易在

后台忘记该应用程序,因为我们通常只打开一个文档。但是这里有两个层次的关闭。

您也可以在操作后立即显式设置WordApp.Visible = false; 这可能会导致短暂闪烁,但应将应用程序设置回不可见。

为了避免可见性的短暂闪烁,有时使用 WordApp.ScreenUpdating 属性也会有所帮助。在尝试Documents.Close()调用之前将其设置为 false,然后在完成后重置为 true。

接受的解决方案(调用WordApp.Quit())对我来说不是一个可行的选择。我尝试设置

WordApp.ScreenUpdating = false 

在调用 Documents.Close() 之前,这也无济于事 - 我仍然有屏幕闪烁。

然后我尝试设置

WordApp.ActiveWindow.Visible = false 

打开文档后立即。这也没有任何区别。

最后我尝试设置

WordApp.ActiveWindow.Top = -5000 

(为了在我的显示器设置中将窗口显示移出可见的桌面区域 - 如果您有不寻常的(巨型!)显示器设置可能不适合您,请相应地调整)并且解决了问题 - 不再闪烁。

一个烦人的黑客,但在我的情况下有效。

以上评论都不适合我。我尝试过:

WordApp.ActiveWindow.Top = -5000

但是我的程序因"活动窗口最大化"异常而终止。

我最终通过在调用Document.Close()之前遵循调用来解决它:

m_word.ActiveWindow.WindowState = WdWindowState.wdWindowStateMinimize;

这对我来说是一个完美的解决方案。希望它也能为你工作。

使用 ActiveDocument.Close() 方法将不会显示窗口。 WordApp.ActiveDocument.Close(saveChanges: false);

以上解决方案都不适合我。

我终于意识到,对我来说,自动打开宏才是问题所在。每次打开Word文档时,AutoOpen都会进行ActiveDocument.Visible = False,运行一些更改(如打开样式窗格),然后在最后ActiveDocument.Visible = True

自动打开中的最后一行是导致每个文档在屏幕上短暂闪烁的原因。从自动打开宏中删除ActiveDocument.Visible = FalseActiveDocument.Visible = True解决了该问题。