我正在从 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 属性,但找不到任何东西。我做了一堆谷歌搜索,找不到任何解决这个问题的东西。
任何人都知道在使用 Visio 自动化时是否可以抑制该警告?如果我切换到 Visio 2007 可以这样做吗?