2017-07-19 3 views
0

J'ai un plugin où je télécharge un document Excel à partir du net et l'ouvre. Comme le document Excel peut être .xls ou .xlsx et le fichier peut contenir des macros, j'ai besoin de vérifier si le classeur actif a des macros.Vérifiez si un document Excel a une macro pour définir l'extension de fichier correcte sur enregistrer

je trouve une solution, mais cela va dans les problèmes de sécurité ...

var hasMacro = false; 
var cmp = ExcelApp.ActiveWorkbook.VBProject; 
foreach (VBComponent c in from VBComponent c in cmp.VBComponents where c.CodeModule.CountOfLines > 1 select c) 
hasMacro = true; 

Mais l'exécution du code se jette dans

Programmatic access to Visual Basic Project is not trusted 

si Excel n'a pas les propriétés correctes situé dans le centre de la confiance.

Comme je veux seulement vérifier si un document Excel a des macros ou ne pas définir l'extension de fichier correcte à .xlsm y at-il un moyen plus intelligent de vérifier les macros?

J'ai trouvé cette SO Answer mais je n'ai pas de propriété HasVBProject.

Répondre

0

Pourquoi ne pas simplement enregistrer tous les fichiers que .xlsm il ne sera pas mal si elle ne dispose pas d'une macro

+0

n'a pas de sens pour sauver si elle n'a pas de macro. Les macros sont la plupart du temps un problème de sécurité, il y a donc une raison pour laquelle un fichier .xlsx ne contient pas de macro. Les fichiers .xlsm provoquent des analyses et des alertes supplémentaires. Donc, ce ne serait pas une bonne solution. – YvesR