我可以确定外部自动化代码是否已打开Office文档?

时间:2011-05-20 06:31:19

标签: .net automation ms-office vsto

我在Office VSTO插件中有一些代码(在VB.NET中为Word,Excel 2003和2007实现),这会导致某些外部自动化代码出现问题。

有没有办法可以确定Office文档是否已由自动化代码打开,而不是由用户打开?应用程序或文档对象中的一些差异,或者我可以处理的事件只会在一种或另一种情况下触发?

2 个答案:

答案 0 :(得分:0)

嗯,一般来说,自动化会打开文档NON VISIBLE,因此您应该能够在documentOpen事件期间测试文档的可见性。它可能不完美,但据我所知,用户无法手动打开文档,因此它应该可以正常工作。

OTOH,有些自动化会故意打开文档(因此用户可以编辑它们),因此可能不是100%的解决方案。

答案 1 :(得分:0)

好的,所以当通过Office对象模型打开Office应用程序时,命令行会使用/automation开关(例如Winword.exe /automation)。

所以我只是在我的插件启动时检查这个并设置一个全局布尔值:

If (Environment.CommandLine.IndexOf("/automation", StringComparison.OrdinalIgnoreCase) >= 0) Then mbOpenedByAutomation = True

我必须做一些测试,以确保没有任何其他可能使用该开关的情况,但我认为这样做会有所帮助。