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

Ste*_*ner 2 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)
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

Ste*_*ner 6

有一个OpenEx方法就像Open一样工作,但它接受标志.其中一个标志是visOpenMacrosDisabled(&H80).

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