web-dev-qa-db-fra.com

Différence entre Visual Basic 6.0 et VBA

Quelle est la différence entre les deux. J'ai toujours pensé que VBA était une version un peu "estropiée" de VB, mais lorsqu'un ami m'a demandé l'autre jour, je ne savais pas quelles étaient les différences.

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

202
Thomas Geritzma

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

VBA ne peut pas compiler votre programme dans 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. En outre, vous ne pourrez pas créer de DLL COM avec VBA.

En dehors de cela, il y a une différence dans le IDE - le VB 6.0 IDE est plus puissant en comparaison. D'autre part, l'intégration de l'application Host dans VBA est étroite. Les objets globaux d'application (tels que "ActiveDocument") et les événements sont disponibles sans déclaration. La programmation spécifique à l'application est donc simple.

Néanmoins, rien ne vous empêche de lancer Word, de charger VBA IDE et de résoudre un problème qui n’a aucune relation 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 le puisse pas. Je cherche cependant une feuille de comparaison sur le MSDN.

169
Tomalak

VBA signifie Visual Basic pour Applications et est donc le petit frère de script "pour applications" de VB. VBA est en effet disponible dans Excel, mais également dans les autres applications bureautiques.

Avec VB, il est possible de 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 permettant d'automatiser ces applications.

Edit : Depuis le FAQ de VBA :

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

A. Microsoft Visual Basic pour 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 utilisant des applications qui hébergent VBA peuvent automatiser et étendre les fonctionnalités de l’application, raccourcissant ainsi le cycle de développement des solutions commerciales personnalisées.

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

44
fretje

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

  • Ils ont la même spécification : description non dépendante de la mise en œuvre de ce que le langage contient et de sa signification. Vous pouvez le lire ici: [MS-VBAL]: Spécification du langage VBA
  • Ils ont la même plate-forme : ils se compilent tous les deux en Microsoft P-Code , qui est à son tour exécuté par la même machine virtuelle, implémentée dans le dll msvbvm [x.0] .dll.

Dans un ancien livre de référence VB que j'ai découvert 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é applications autonomes ou dans des contextes intégrés (tels que MS Office):

"Avant d'aller plus loin, clarifions un point fondamental. Visual Basic pour Applications (VBA) est le langage utilisé pour programmer en Visual Basic (VB). VB est lui-même un environnement de développement; l'élément de langage de cet environnement est VBA ".

Les différences mineures

Hébergé ou autonome : Concrètement, lorsque la plupart des gens disent "VBA", ils signifient spécifiquement "VBA lorsqu'il est utilisé dans MS Office", et ils disent "VB6" signifie "VBA utilisé dans la dernière version du compilateur autonome VBA (Visual Studio 6)". IDE et le compilateur fourni avec MS Office sont presque identiques à Visual Studio 6, avec la limitation qu'il ne permet pas la compilation en fichiers dll ou exe autonomes. Cela signifie à son tour que les classes définies dans les projets VBA intégrés ne sont pas accessibles à partir de consommateurs COM non intégrés, car elles ne peuvent pas être enregistrées.

Développement continu : Microsoft a cessé de produire un compilateur VBA autonome avec Visual Studio 6, car ils sont passés au runtime .NET en tant que plate-forme de choix. Cependant, l'équipe MS Office continue à maintenir VBA et a même publié une nouvelle version (VBA7) avec un nouveau VM (maintenant appelé VBA7.dll) commençant par MS Office 2010. La seule différence majeure est que VBA7 a une version 32 bits et une version 64 bits et quelques améliorations ont été apportées pour gérer les différences entre les deux, en particulier en ce qui concerne les invocations d'API externes.

38
Joshua Honig

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

VBA (Visual Basic pour Applications) est un langage de script basé sur vb-classic intégré aux applications Microsoft Office. Je pense que ses fonctionnalités de langage sont similaires à celles de VB5 (il ne lui manque que 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.

  • Écrivez des macros (= des routines automatisées pour de petites tâches récurrentes dans votre travail de bureau)
  • Définir de nouvelles fonctions pour Excel-cell-formula
  • Traiter les données du bureau

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

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

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

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

15
Dario

En réalité, VBA peut être utilisé pour compiler des DLL. Les éditions Office 2000 et Office XP Developer incluaient un éditeur VBA pouvant être utilisé pour créer des DLL à utiliser comme compléments 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 que vous puissiez évidemment toujours créer des compléments COM de la même manière sans utiliser VSTO (ou VS.Net) par en utilisant VB6 IDE.

11
anonymousType

C'est VBA. VBA signifie Visual Basic pour Applications et est utilisé pour les macros sur les documents Office. Il n'a pas accès aux fonctionnalités de VB.NET, il ressemble donc davantage à une version modifiée de VB6, avec des modules complémentaires permettant de travailler sur le document (comme Worksheet dans VBA pour Excel).

6
instanceof me

VB n'est pas une langue. VB est un programme qui héberge VBA, tout comme Office héberge VBA. VB est un ensemble d'objets d'application, comme Word et Excel, et un package de formulaires, comme dans Office.

Vous ne pouvez donc écrire du code VBA qu'en VB.

PS cette information est sur l'onglet INFO de la page question VB pour VB.

à partir de VBA Info

VBA 6, livré en 1998, inclut une multitude d'hôtes hébergés sous licence, notamment Office 2000 - 2010, AutoCAD, PI Processbook et le logiciel autonome Visual Basic 6.0.

5
Serenity

VBA signifie Visual Basic for Applications et son implémentation Visual Basic destinée à être utilisée dans la suite Office.

La différence entre eux réside dans le fait que VBA est intégré à des documents Office (une fonctionnalité Office). VB est l'idé/langage pour développer des applications.

4
Victor

VB (Visual Basic uniquement jusqu'à 6.0) est un sur-ensemble de VBA (Visual Basic pour Applications). Je sais que d’autres ont en quelque sorte échappé à cette idée, mais j’ai bien compris que la sémantique (c’est-à-dire le vocabulaire) de VBA est incluse dans VB6 (à l’exception des objets spécifiques aux produits Office). VBA est donc un sous-ensemble de VB6. La syntaxe (c’est-à-dire l’ordre dans lequel les mots sont écrits) est exactement la même dans VBA que dans VB6, mais la différence est que les objets disponibles pour VBA ou VB6 sont différents car ils ont des objectifs différents. L'objectif spécifique de VBA est d'automatiser par programme les tâches pouvant être effectuées dans MS Office, alors que l'objectif de VB6 est de créer des fichiers EXE, Contrôles ActiveX, ActiveX DLL et ActiveX standard pouvant fonctionner de manière autonome ou dans d'autres programmes tels que MS Office ou Windows.

1
user65795