在代码自动化时,是否可以抑制Visio的宏警告提示?

时间:2009-06-24 20:36:57

标签: vb.net visio office-automation

我正在从VB.NET应用程序自动化Visio 2003。我的代码看起来像这样(删除了无趣的东西):

Dim objApp As New Microsoft.Office.Interop.Visio.InvisibleApp
objApp.Settings.ShowFileOpenWarnings = False
Dim objDoc As Microsoft.Office.Interop.Visio.Document
objDoc = objApp.Documents.Open(VisioFilename)

我发现最后一行导致Visio引发隐藏的MessageBox说:

本文档中的宏被禁用,因为安全级别很高,并且宏未经过数字签名或验证为安全。要运行宏,您可以让它们签名或更改安全级别。

由于这将在我无法控制文件的计算机上运行,​​我无法控制这些选项对我来说都不适用。我真的不在乎宏被禁用,我只是使用Visio将文件从其原生格式转换为SVG。我当然不希望向用户建议他们降低安全级别,也不想为他们降低安全级别。

从上面的代码中可以看出,我关闭文件打开警告,但似乎不包括宏警告。由于我使用的是Visio.InvisibleApp,因此警告不会显示给用户。运行Visio的可见实例无济于事,因为我正在创建批处理转换器,即使消息可见,也意味着用户必须为每个文件单击“确定”。这将使批量转换功能基本无用。

我看到Visio类有一个VBAEnabled属性,但它是只读的。如果有办法我可以在打开文件时关闭VBA,它可能会解决问题。我查看了所有属性和类中的Settings属性,但找不到任何内容。我已经完成了大量的Google搜索,无法找到解决此问题的任何内容。

任何人都知道在Visio中使用自动化时是否可以抑制该警告?如果我切换到Visio 2007,我可以这样做吗?

1 个答案:

答案 0 :(得分:6)

OpenEx方法与Open一样,但它接受标志。其中一个标志是visOpenMacrosDisabled(& H80)。

还有其他一些方便的标志,如visOpenDontList(& H8),因此通过自动化打开的文件不会被添加到最近的文件列表中。