2

我正在从 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 可以这样做吗?

4

1 回答 1

6

有一种 OpenEx 方法,其工作方式与 Open 类似,但它接受标志。这些标志之一是 visOpenMacrosDisabled (&H80)。

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

于 2009-06-30T16:20:46.270 回答