Il prompt di avviso macro di Visio può essere eliminato durante l'automazione nel codice?

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

  •  22-07-2019
  •  | 
  •  

Domanda

Sto automatizzando Visio 2003 da un'app VB.NET. Il mio codice è simile al seguente (con le cose poco interessanti rimosse):

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)

Ho scoperto che l'ultima riga fa sì che Visio rilasci un MessageBox nascosto che dice:

Le macro in questo documento sono disabilitate perché il livello di sicurezza è alto e le macro non sono state firmate digitalmente o verificate come sicure. Per eseguire le macro, è possibile firmarle o modificare il livello di sicurezza.

Dal momento che questo verrà eseguito su computer che non controllo con i file, non controllo nessuna di queste opzioni funziona per me. Non mi interessa davvero che le macro siano disabilitate, sto solo usando Visio per convertire il file dal suo formato nativo in SVG. Non voglio certo suggerire agli utenti di abbassare il livello di sicurezza, né vorrei abbassarlo per loro.

Come puoi vedere dal mio codice sopra, spengo gli avvisi di apertura dei file ma questo non sembra includere l'avviso macro. Dal momento che sto usando Visio.InvisibleApp risulta che l'avviso non viene visualizzato per l'utente. L'esecuzione di un'istanza visibile di Visio non aiuta perché sto creando un convertitore batch, anche se il messaggio era visibile significa che l'utente avrebbe dovuto fare clic su OK per ciascun file. Ciò renderebbe sostanzialmente inutile la funzionalità di conversione batch.

Vedo che la classe Visio ha una proprietà VBAEnabled ma è di sola lettura. Se ci fosse un modo in cui potrei semplicemente disattivare VBA all'apertura del file, probabilmente risolverebbe il problema. Ho esaminato tutte le proprietà e le proprietà Impostazioni sulla classe e non riesco a trovare nulla. Ho fatto molte ricerche su Google e non riesco a trovare nulla che risolva questo problema.

Qualcuno sa se tale avviso può essere soppresso quando si utilizza l'automazione con Visio? Posso farlo se passo a Visio 2007?

È stato utile?

Soluzione

Esiste un metodo OpenEx che funziona esattamente come Open ma accetta flag. Uno di questi flag è visOpenMacrosDisabled (& amp; H80).

Ci sono anche alcuni altri utili flag come visOpenDontList (& amp; H8) in modo che i file aperti tramite l'automazione non vengano aggiunti all'elenco dei file recenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top