views:

386

answers:

1

I'm automating Visio 2003 from a VB.NET app. My code looks like this (with the uninteresting stuff removed):

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)

I've found that the last line causes Visio to raise a hidden MessageBox saying:

Macros in this document are disabled because the security level is high, and the macros have not been digitally signed or verified as safe. To run the macros, you can either have them signed or change your security level.

Since this is going to be running on computers I don't control with files I don't control neither of those options works for me. I really don't care that the macros are disabled, I'm just using Visio to convert the file from it's native format to SVG. I certainly don't want to suggest to users that they lower the security level, nor would I want to lower it for them.

As you can see from my code above, I turn off file open warnings but that doesn't seem to include the macro warning. Since I'm using Visio.InvisibleApp it turns out the warning isn't displayed to the user. Running a visible instance of Visio won't help because I'm creating a batch converter, even if the message was visible it means the user would have to click OK for each file. That would make the batch conversion feature essentially useless.

I see that the Visio class has a VBAEnabled property but it's read only. If there was a way I could just turn off VBA when opening the file it would likely solve the problem. I've looked all through the properties and through the Settings property on the class and can't find anything. I've done a bunch of Google searching and can't find anything that addresses this issue.

Anyone know if that warning can be suppressed when using automation with Visio? Can I do it if I switch to Visio 2007?

+2  A: 

There is an OpenEx method that works just like Open but it accepts flags. One of those flags is visOpenMacrosDisabled (&H80).

There are also some other handy flags in there like visOpenDontList (&H8) so the files opened through automation won't be added to the recent files list.

Steve Hiner
I realize this is something I should have noticed initially. I'm going to leave the question and answer up here in case someone else has a similar problem.
Steve Hiner