Vérifier si un fichier Excel contient des macros
Bonjour,
Je suis en train de faire un script qui converti tous mes fichiers xls en xlsx. Tout fonctionne super bien sauf pour mes fichiers xls qui contiennent des macros.
En effet, lorsque mon script ouvre un fichier xls avec des macros, il y a une fenêtre Excel qui s'ouvre demandant si je veux Activer ou Désactiver les macros.. Et mon script d'arrête là.
En résumé, je cherche un bout de script qui vérifie si cette boîte de dialogue s'ouvre ou pas. Si elle s'ouvre, c'est qu'elle contient des macros, donc le script ferme ce fichier et passe au suivant.
Help me les amis :)
Vérifier si un fichier Excel contient des macros
Bonsoir Joninho,
Je suppose que ton script parcours les fichiers Excel d'un dossier, ouvre chaque fichier et l'enregistre sous l'une des formats .xlsx (sans macro) ou xlsm (avec macro).
Ton post contient en fait 2 questions :
1) comment désactiver l'alerte sur la macro à l'ouverture ?
2) une fois ouvert comment savoir sous quel format enregistrer selon macro ou pas ?
1) il faut changer un paramètre dans les préf Excel. Ouvre un fichier avec une macro. Menu Excel, / préférences, puis dans l'onglet sécurité, tu dois pouvoir régler une option d'alerte des macros (qui doit être coché pour l'instant). Le format et l'appellation exactes dépendent de ta version d'Excel.
Tu fermes ton fichier en l'enregistrant, tu quittes Excel et tu n'auras plus d'alerte (attention ! plus d'alerte peut être dangereux)
2) Déterminer la présence d'une macro
Lorsque tu ouvres le fichier à convertir dans le script avec Excel, il suffit de tester le paramètre Booléen "has vb project" du "workbook actif
Voici un exemple :
Code:
1 2 3 4 5 6 7 8
| set Mon_Fichier to choose file
tell application "Microsoft Excel"
open Mon_Fichier
set Mon_Book to active workbook
set MacroFlag to has vb project of Mon_Book
display dialog "Macro ? =" & (MacroFlag) as string
end tell |
La première ligne de choix du fichier est juste là pour l'exemple (j'ai testé avant !!)
Ensuite, j'ouvre le fichier et j'assigne à MacroFlag, la valeur true/false selon la présence d'une macro.
Pour ton script, il manque la boucle sur tous les fichiers et surtout l'enregistrement sous ... avec le type selon MacroFlag et bien sûr le close.
J'espère avoir répondu à ta question
Cordialement
PBell