Voici une réponse plus technique et approfondie à une vieille question : Visual Basic for Applications (VBA) and Visual Basic (pre-.NET) ne sont pas juste des langages similaires, ce sont le même langage. Plus précisément:
- Ils ont la même spécification : la description indépendante de l'implémentation de ce que le langage contient et ce qu'il signifie. Vous pouvez la lire ici : [MS-VBAL] : Spécification du langage VBA
- Ils ont la même plateforme : ils compilent tous les deux en Microsoft P-Code, qui est ensuite exécuté par la même machine virtuelle, implémentée dans la dll msvbvm[x.0].dll.
Dans un ancien livre de référence VB que j'ai trouvé l'année dernière, l'auteur (Paul Lomax) a même affirmé que 'VBA' a toujours été le nom du langage lui-même, que ce soit utilisé dans des applications autonomes ou dans des contextes intégrés (comme MS Office) :
"Avant d'aller plus loin, clarifions un point fondamental. Visual Basic for Applications (VBA) est le langage utilisé pour programmer en Visual Basic (VB). VB lui-même est un environnement de développement; l'élément langage de cet environnement est VBA."
Les différences mineures
Hébergé vs autonome : En termes pratiques, lorsque la plupart des gens disent "VBA", ils signifient spécifiquement "VBA lorsqu'il est utilisé dans MS Office", et ils disent "VB6" pour signifier "VBA utilisé dans la dernière version du compilateur VBA autonome (c'est-à-dire Visual Studio 6)". L'IDE et le compilateur inclus avec MS Office sont presque identiques à Visual Studio 6, avec la limitation qu'ils ne permettent pas la compilation de fichiers dll ou exe autonomes. Cela signifie que les classes définies dans les projets VBA intégrés ne sont pas accessibles depuis des consommateurs COM non intégrés, car elles ne peuvent pas être enregistrées.
Développement continu : Microsoft a arrêté de produire un compilateur VBA autonome avec Visual Studio 6, car ils sont passés à l'environnement d'exécution .NET comme plateforme de choix. Cependant, l'équipe MS Office continue de maintenir VBA, et a même sorti une nouvelle version (VBA7) avec une nouvelle machine virtuelle (maintenant simplement appelée VBA7.dll) à partir de MS Office 2010. La seule différence majeure est que VBA7 a à la fois une version 32 et 64 bits et comporte quelques améliorations pour gérer les différences entre les deux, notamment en ce qui concerne les invocations d'API externes.