3 votes

Comment enregistrer un fichier XLSM en tant que fichier XLSX sans demander à l'utilisateur de signaler la perte de données ?

TLDR :

Comment enregistrer un fichier Excel avec macros en tant que fichier Excel sans macros à l'aide de VBA ? suppression de l'invite indiquant que le format cible ne prend pas en charge les macros ?


J'ai un fichier xlsb (Excel 2007+ avec Macros), à l'intérieur se trouve le contenu et un bouton qui devrait enregistrer ce fichier en tant que xlsx (Excel 2007 SANS Macros). Jusqu'à présent, tout va bien. Je vais utiliser ActiveWorkbook.SaveAs FileName:=name, FileFormat=xlOpenXMLWorkbook, Password="xyz"

Mais cela génère toujours une invite qui indique à l'utilisateur que l'enregistrement des données dans le format cible entraîne la perte des données de la macro et que s'il veut continuer...

J'ai essayé Application.DisplayAlerts = False y ThisWorkbook.CheckCompatibility = False . J'ai également enregistré la même action avec le MacroRecorder qui semble également incapable d'ignorer l'invite à venir.

Mon dernier essai était une copie du contenu en utilisant ThisWorkbook.Sheets.Copy et j'essaie de supprimer les données de VBProject. J'ai essayé plusieurs méthodes, mais il semble que les données de VB-Project ne puissent pas être réellement supprimées. Après avoir exécuté remove et des trucs comme ça, le débogueur montre toujours trois éléments de vb-project-data.

Je vérifierai ça demain, mais ça ressemble beaucoup au code que j'ai essayé... Macro pour sauvegarder la feuille active comme nouveau classeur, demander à l'utilisateur l'emplacement et supprimer les macros du nouveau classeur.

-1voto

Alex de Jong Points 1189

Vous pouvez utiliser

Thisworkbook.SaveCopyAs ([filename.xlsx]) .

Cela crée une copie du classeur sans les macros qu'il contient et sans l'alerte. Le nom de fichier [filename.xlsx] doit bien sûr être remplacé par votre propre chemin d'accès au fichier. Utilisez l'extension xlsx pour vous assurer que vous ne copiez pas les macros.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X