210 votes

Différence entre Visual Basic 6.0 et VBA

Quelle est la différence entre les deux. J'ai toujours pensé que VBA est une version quelque peu 'amoindrie' de VB, mais quand un ami m'a demandé l'autre jour je n'avais aucune idée des différences réelles.

Aussi, lorsque vous utilisez, par exemple, Excel, est-ce du VB ou du VBA ?

179voto

Tomalak Points 150423

Pour presque tous les besoins de programmation, VBA et VB 6.0 sont la même chose.

VBA ne peut pas compiler votre programme en un binaire exécutable. Vous aurez toujours besoin de l'hôte (un fichier Word et MS Word, par exemple) pour contenir et exécuter votre projet. Vous ne pourrez pas non plus créer de DLL COM avec VBA.

En dehors de cela, il y a une différence dans l'IDE - l'IDE VB 6.0 est plus puissant en comparaison. D'un autre côté, vous avez une intégration étroite de l'application hôte en VBA. Les objets globaux de l'application (comme "ActiveDocument") et les événements sont disponibles sans déclaration, de sorte que la programmation spécifique à l'application est simple.

Cependant, rien ne vous empêche de démarrer Word, de charger l'IDE VBA et de résoudre un problème qui n'a aucun rapport avec Word. Je ne suis pas sûr s'il y a quelque chose que VB 6.0 peut faire (techniquement), et que VBA ne peut pas. Je recherche néanmoins une feuille de comparaison sur le MSDN.

7 votes

Il ne semble pas y avoir de page de comparaison concise sur les pages microsoft.com, ou ils les ont bien cachées. Il suffit de dire que le code VB 6.0 s'exécute sans modification en VBA, sauf si vous faites référence à des objets COM qui ne sont pas inclus dans VBA, bien sûr.

7 votes

VBA et Vb6 utilisent le même fichier dll, c'est pourquoi le code fonctionne dans les deux. Cependant, il y a quelque chose comme un objet Printer en VB6 qui n'est pas en VBA et je ne sais pas pourquoi. Sinon, je crois qu'il n'y a pas de différences dans les langages de base.

48 votes

C'est pourquoi je pense qu'il vaut la peine d'ajouter que l'ouverture d'un document Office comporte presque le même risque que l'ouverture d'un exécutable.

48voto

fretje Points 6074

VBA signifie Visual Basic pour Applications et est donc le petit frère du VB dédié au scripting pour les applications. VBA est en effet disponible dans Excel, mais aussi dans les autres applications de la suite Office.

Avec VB, il est possible de créer une application Windows autonome, ce qui n'est pas possible avec VBA.

Cependant, les développeurs ont la possibilité d'"intégrer" VBA dans leurs propres applications, en tant que langage de script pour automatiser ces applications.

Éditer : D'après les FAQ sur VBA:

Q. Qu'est-ce que Visual Basic pour Applications ?

R. Microsoft Visual Basic pour Applications (VBA) est un environnement de programmation intégrable conçu pour permettre aux développeurs de construire des solutions personnalisées en utilisant toute la puissance de Microsoft Visual Basic. Les développeurs utilisant des applications hébergeant VBA peuvent automatiser et étendre les fonctionnalités de l'application, raccourcissant ainsi le cycle de développement des solutions métier personnalisées.

À noter que VB.NET est un autre langage, partageant seulement la syntaxe avec VB.

9 votes

En réalité, Microsoft désigne VB.Net sous le nom de "Visual Basic". Voir msdn.microsoft.com/en-us/vbasic/default.aspx.

20 votes

Oui. C'est un fait qui me donne envie de m'arracher les cheveux chaque fois que je cherche de l'aide spécifique pour VB ou VBA sur Google. Décision marketing stupide.

8 votes

@Tomalak: C'est pourquoi j'ai simplement noté ça ;-)

42voto

Joshua Honig Points 5382

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.

2 votes

Je me souviens de la même citation dans le livre de Lomax, mais étant donné tous les autres déclarations contraires sur ce forum, sur Wikipédia, etc., je me demande qui a raison, et pourquoi il y a désaccord! Lomax a également écrit (p. 3), "VBA est le même langage que vous l’utilisiez pour créer une application VB ou pour automatiser une tâche dans Word ou Excel." Aussi, "VBA est un langage hébergé et fait partie de la famille d'outils de développement VB."

1 votes

Si vous choisissez l'aide en VB6, vous accédez à la référence de language VBA. VB6, comme Word, héberge le langage VBA. Comme les objets Application sont des objets globaux (standard Automation), VB6 fournit un objet App adapté pour les programmes autonomes. Word fournit un objet App pour les macros Word. Notez que le langage est identique, toute référence à des éléments manquants concerne les objets fournis par l'hôte comme l'objet imprimante VB6 - il ne fait pas partie du langage mais de l'hôte.

15voto

Dario Points 26259

Voulez-vous comparer VBA avec VB-Classic (VB6..) ou VB.NET?

VBA (Visual Basic for Applications) est un langage de script basé sur VB-Classic intégré dans les applications Microsoft Office. Je pense que ses fonctionnalités linguistiques sont similaires à celles de VB5 (il manque juste quelques fonctions intégrées), mais :

Vous avez accès au document office pour lequel vous avez écrit le script VBA et vous pouvez par exemple :

  • Écrire des macros (= routines automatisées pour les petites tâches récurrentes dans votre travail de bureau)
  • Définir de nouvelles fonctions pour les formules de cellule Excel
  • Traiter des données de bureau

Exemple : Définir la valeur d'une cellule Excel

ActiveSheet.Cells("A1").Value = "Foo"

VB et .NET ne sont pas des langages de script. Vous les utilisez pour écrire des applications autonomes avec des IDE séparés, ce que vous ne pouvez pas faire avec VBA (les scripts VBA existent uniquement dans Office)

VBA n'a rien à voir avec VB.NET (ils ont juste une syntaxe similaire).

11voto

En fait, VBA peut être utilisé pour compiler des DLL. Les éditions Office 2000 et Office XP pour développeurs incluaient un éditeur VBA qui pouvait être utilisé pour créer des DLL à utiliser en tant qu'éléments COM.

Cette fonctionnalité a été supprimée dans les versions ultérieures (2003 et 2007) avec l'arrivée du logiciel VSTO (VS Tools for Office), bien que vous puissiez toujours créer des éléments COM de manière similaire sans utiliser VSTO (ou VS.Net) en utilisant l'IDE VB6.

10 votes

Cette fonctionnalité n'a pas été supprimée. Microsoft n'a tout simplement pas mis à jour "Office XP Developer" pour supporter les versions ultérieures. Vous pouvez toujours installer le développeur et il fonctionne sans problèmes. Il n'est tout simplement pas pris en charge par Microsoft. Cela est dû au fait que VBA, qui est livré avec 2003/2007, est toujours la même version de VBA que XP/2002.

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