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 était en quelque sorte une version "estropiée" de VB, mais lorsqu'un ami m'a posé la question l'autre jour, je n'avais aucune idée des différences réelles.

Par ailleurs, lorsque vous utilisez, par exemple, Excel, s'agit-il de VB ou de VBA ?

179voto

Tomalak Points 150423

Pour la quasi-totalité des 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'autre part, vous disposez d'une intégration étroite de l'application hôte dans 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.

Pourtant, rien ne vous empêche de lancer 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 qu'il y ait quelque chose que VB 6.0 puisse faire (techniquement) et que VBA ne puisse pas faire. Je suis à la recherche d'une fiche de comparaison sur le MSDN cependant.

7 votes

Il ne semble pas y avoir de page de comparaison concise sur les pages de microsoft.com, ou alors ils les ont bien cachées. Il suffit de dire que le code VB 6.0 s'exécute sans modification dans VBA, à moins que vous ne fassiez référence à des objets COM qui ne sont pas livrés avec 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 Imprimante dans VB6 qui n'est pas dans VBA et je ne sais pas pourquoi. Sinon, je pense qu'il n'y a pas de différences dans les langages de base.

48 votes

C'est pourquoi je pense qu'il est utile 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 les applications et c'est aussi le petit frère de script "pour applications" de VB. VBA est en effet disponible dans Excel, mais aussi dans les autres applications bureautiques.

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

Il est toutefois possible pour les développeurs d'"intégrer" VBA dans leurs propres applications, en tant que langage de script pour automatiser ces applications.

Modifier : De la FAQ VBA :

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

A. Microsoft Visual Basic for Applications (VBA) est un environnement de programmation intégrable conçu pour permettre aux développeurs de créer des solutions personnalisées en utilisant toute la puissance de Microsoft Visual Basic. Les développeurs qui utilisent des applications hébergeant VBA peuvent automatiser et étendre les fonctionnalités de l'application, ce qui raccourcit le cycle de développement de solutions commerciales personnalisées.

Notez que VB.NET est même un autre langage, qui ne partage que la syntaxe de VB.

9 votes

En fait, Microsoft désigne VB.Net par "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 à VB ou VBA via Google. Décision marketing stupide.

8 votes

@Tomalak : C'est pourquoi j'ai juste Noté que ;-)

42voto

Joshua Honig Points 5382

Voici une réponse plus technique et plus approfondie à une ancienne question : Visual Basic for Applications (VBA) et Visual Basic (pre-.NET) ne sont pas seulement des langages similaires, ils sont les même langue. Plus précisément :

  • Ils ont le même spécification : La description indépendante de l'implémentation de ce que contient le langage et de ce qu'il signifie. Vous pouvez le lire ici : [MS-VBAL] : Spécification du langage VBA
  • Ils ont le même plateforme : Ils compilent tous deux en Code P de Microsoft qui est à son tour exécuté par la même machine virtuelle, qui est mise en œuvre dans la dll msvbvm[x.0].dll.

Dans un un vieux livre de référence VB sur lequel je suis tombé 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, qu'il 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 dans Visual Basic (VB). VB lui-même est un environnement de développement ; l'élément linguistique de cet environnement est VBA."

Les petites différences

Hébergé ou autonome : En termes pratiques, lorsque la plupart des gens disent "VBA", ils veulent dire spécifiquement "VBA 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 fournis avec MS Office sont presque identiques à Visual Studio 6, à ceci près qu'ils ne permettent pas la compilation en fichiers dll ou exe autonomes. Cela signifie que les classes définies dans les projets VBA intégrés ne sont pas accessibles aux consommateurs COM non intégrés, car elles ne peuvent pas être enregistrées.

Poursuite du développement : Microsoft a cessé de produire un compilateur VBA autonome avec Visual Studio 6, car la société est passée au runtime .NET comme plate-forme de choix. Cependant, l'équipe MS Office continue à maintenir VBA, et a même publié une nouvelle version (VBA7) avec une nouvelle VM (maintenant juste appelée VBA7.dll) à partir de MS Office 2010. La seule différence majeure est que VBA7 dispose d'une version 32 et 64 bits et a été amélioré 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 cette même citation dans le livre de Lomax, mais étant donné toutes les autres déclarations contraires sur ce forum, sur Wikipedia, 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." De plus, "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 du langage VBA. VB6, comme Word, héberge le langage VBA. Comme les objets d'application sont des objets globaux (norme d'automatisation). VB6 fournit un objet App adapté aux programmes autonomes. Word fournit un objet App pour les macros Word. Notez que le langage est identique, toute référence à des choses manquantes sont des 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-Classique (VB6..) ou VB.NET?

VBA (Visual Basic pour Applications) est un vb-classique à base de langage de script incorporé dans les applications Microsoft Office. Je pense que c'est un langage caractéristiques sont similaires à ceux de VB5 (il manque juste quelques fonctions internes), mais:

Vous avez accès à l'office de document que vous avez écrit le VBA-script et donc vous pouvez par exemple

  • L'écriture de macros (=routines automatisées pour les petites tâches récurrentes dans votre bureau de travail)
  • Définir de nouvelles fonctions pour excel-la cellule de la formule
  • Le bureau du processus de données

Exemple: Définir la valeur d'une excel-cellule

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

VBC et -.NET sont pas des langages de script. Vous les utilisez pour écrire autonome-applications avec IDE distinct que vous ne pouvez pas faire avec VBA VBA (scripts juste "exister" dans le Bureau)

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 Developer comprenaient un éditeur VBA qui pouvait être utilisé pour créer des DLL à utiliser comme complément COM.

Cette fonctionnalité a été supprimée dans les versions ultérieures (2003 et 2007) avec l'avènement du logiciel VSTO (VS Tools for Office), bien qu'il soit évidemment toujours possible de créer des addins COM de manière similaire sans utiliser VSTO (ou VS.Net) en utilisant l'IDE VB6.

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