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);
叫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 = False
和ActiveDocument.Visible = True
解决了该问题。