¿Se puede suprimir el mensaje de advertencia macro de Visio cuando se automatiza en código?

StackOverflow https://stackoverflow.com/questions/1040843

  •  22-07-2019
  •  | 
  •  

Pregunta

Estoy automatizando Visio 2003 desde una aplicación VB.NET. Mi código se ve así (sin las cosas interesantes):

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)

He descubierto que la última línea hace que Visio genere un MessageBox oculto que dice:

Las macros en este documento están deshabilitadas porque el nivel de seguridad es alto y las macros no se han firmado digitalmente ni verificado como seguro. Para ejecutar las macros, puede tenerlas firmadas o cambiar su nivel de seguridad.

Dado que esto se ejecutará en computadoras que no controlo con archivos, no controlo ninguna de esas opciones me funciona. Realmente no me importa que las macros estén deshabilitadas, solo estoy usando Visio para convertir el archivo de su formato nativo a SVG. Ciertamente no quiero sugerir a los usuarios que bajen el nivel de seguridad, ni me gustaría bajarlo por ellos.

Como puede ver en mi código anterior, apago las advertencias de apertura de archivo, pero eso no parece incluir la advertencia de macro. Como estoy usando Visio.InvisibleApp, resulta que la advertencia no se muestra al usuario. Ejecutar una instancia visible de Visio no ayudará porque estoy creando un convertidor por lotes, incluso si el mensaje estaba visible significa que el usuario tendría que hacer clic en Aceptar para cada archivo. Eso haría que la función de conversión por lotes sea esencialmente inútil.

Veo que la clase Visio tiene una propiedad VBAEnabled pero es de solo lectura. Si hubiera una forma en que pudiera apagar VBA al abrir el archivo, probablemente resolvería el problema. He examinado todas las propiedades y la propiedad Configuración en la clase y no puedo encontrar nada. He realizado muchas búsquedas en Google y no puedo encontrar nada que aborde este problema.

¿Alguien sabe si esa advertencia se puede suprimir cuando se usa la automatización con Visio? ¿Puedo hacerlo si me cambio a Visio 2007?

¿Fue útil?

Solución

Hay un método OpenEx que funciona igual que Open pero acepta banderas. Una de esas banderas es visOpenMacrosDisabled (& amp; H80).

También hay algunos otros indicadores útiles como visOpenDontList (& amp; H8) para que los archivos abiertos a través de la automatización no se agreguen a la lista de archivos recientes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top