L'invite d'avertissement de macro de Visio peut-elle être supprimée lors de l'automatisation dans le code?

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

  •  22-07-2019
  •  | 
  •  

Question

J'automatise Visio 2003 à partir d'une application VB.NET. Mon code ressemble à ceci (avec la substance inintéressante supprimée):

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)

J'ai constaté que la dernière ligne entraînait l'affichage d'une MessageBox masquée dans Visio:

Les macros dans ce document sont désactivées, car le niveau de sécurité est élevé et les macros n'ont pas été signées numériquement ni vérifiées comme sûres. Pour exécuter les macros, vous pouvez les faire signer ou modifier votre niveau de sécurité.

Puisqu'il va s'exécuter sur des ordinateurs que je ne contrôle pas avec des fichiers, aucune de ces options ne me convient. Peu m'importe que les macros soient désactivées, j'utilise simplement Visio pour convertir le fichier de son format natif au format SVG. Je ne veux certainement pas suggérer aux utilisateurs de baisser le niveau de sécurité, pas plus que je ne voudrais le baisser pour eux.

Comme vous pouvez le voir dans mon code ci-dessus, je désactive les avertissements d'ouverture de fichier, mais cela ne semble pas inclure l'avertissement de macro. Depuis que j'utilise Visio.InvisibleApp, l'avertissement n'apparaît pas à l'utilisateur. L'exécution d'une instance visible de Visio ne m'aidera pas, car je crée un convertisseur de lot. Même si le message était visible, cela signifierait que l'utilisateur devrait cliquer sur OK pour chaque fichier. Cela rendrait la fonctionnalité de conversion par lots essentiellement inutile.

Je vois que la classe Visio a une propriété VBAEnabled mais qu'elle est en lecture seule. S'il existait un moyen de désactiver VBA lors de l'ouverture du fichier, le problème serait probablement résolu. J'ai parcouru toutes les propriétés et la propriété Settings de la classe et je ne trouve rien. J'ai effectué de nombreuses recherches sur Google et je ne trouve rien qui réponde à ce problème.

Quelqu'un sait-il si cet avertissement peut être supprimé lors de l'utilisation de l'automatisation avec Visio? Puis-je le faire si je passe à Visio 2007?

Était-ce utile?

La solution

Il existe une méthode OpenEx qui fonctionne comme Open mais accepte les drapeaux. L'un de ces indicateurs est visOpenMacrosDisabled (& H80).

Il y a aussi quelques autres indicateurs utiles comme visOpenDontList (& amp; H8) pour que les fichiers ouverts par automatisation ne soient pas ajoutés à la liste des fichiers récents.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top