Microsoft a récemment cassé notre code depuis longtemps (et officiellement recommandé par eux) pour lire la version d'Excel et son niveau actuel de sécurité omacro.Comment obtenir la version d'Excel et le niveau de sécurité des macros
Ce qui travaillait:
// Get the program associated with workbooks, e.g. "C:\Program Files\...\Excel.exe"
SHELLAPI.FindExecutable('OurWorkbook.xls', ...)
// Get the version of the .exe (from it's Properties...)
WINDOWS.GetFileVersionInfo()
// Use the version number to access the registry to determine the security level
// '...\software\microsoft\Office\' + VersionNumber + '.0\Excel\Security'
(je suis toujours amusée que le niveau de sécurité a été pendant des années dans une entrée de registre non sécurisé ...)
Dans Office 2010, les fichiers .xls sont maintenant associé à "" Microsoft Application Virtualization DDE Launcher "ou sftdde.exe. Le numéro de version de cet exe n'est évidemment pas la version d'Excel.
Ma question:
Autre que fait le lancement d'Excel et pour l'interrogation la version et sécurité niveau (en utilisant OLE CreateOleObject ('Excel.Application')), est-il plus propre, plus rapide, ou un moyen plus fiable de faire cela qui fonctionnerait avec toutes les versions à partir d'Excel 2003?
Merci, Andreas. C'est exactement ce dont j'avais besoin. Notez qu'il existe des parenthèses de fermeture mal placées. Il devrait se lire: résultat: = ReadString ('Path') + 'excel.exe'; – RobertFrank
@ Tom1952: Très vrai. Corrigée. –
Cette réponse n'est plus exacte, si jamais elle l'était. Ce chemin de registre n'existe pas. – GolezTrol