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 "estropiée" de VB, mais quand un ami m'a demandé l'autre jour, je n'avais aucune idée des différences réelles.

En outre, lorsque vous utilisez, par exemple, Excel, est-ce VB ou VBA ?

196
demandé sur Tomalak 2009-06-14 21:43:27

9 réponses

Pour presque tous les besoins de 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. 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 avez une intégration étroite de L'application hôte dans VBA. Les objets globaux d'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 s'il y a quelque chose que VB 6.0 peut faire (techniquement), et VBA ne peut pas. Je suis à la recherche d'une feuille de comparaison sur le MSDN cependant.

161
répondu Tomalak 2009-06-14 18:33:48

VBA signifieVisual Basic pour les Applications et est donc le petit frère de script "pour les applications" de VB. VBA est en effet disponible dans Excel, mais aussi dans les autres applications office.

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

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

Modifier : à partir du VBA FAQ :

Q. Qu'est-ce que Visual Basic pour les 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 utilisant des applications hébergeant VBA peuvent automatiser et étendre les fonctionnalités de l'application, raccourcissant ainsi le cycle de développement de solutions métier personnalisées.

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

42
répondu fretje 2009-06-14 18:05:11

Voici une réponse plus technique et approfondie à une ancienne question: Visual Basic for Applications (VBA) et Visual Basic (pre-.NET) ne sont pas seulement des langues similaires, ils sont lemême Langue. 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 de ce qu'il signifie. Vous pouvez le lire ici: [MS-VBAL]: Spécification du langage VBA
  • ils ont la même plate-forme : ils les deux compilent à Microsoft P-Code , qui est à son tour exécuté par la même machine virtuelle exacte, qui est implémentée dans la dll msvbvm[x. 0].DLL.

Dans un ancien Livre de référence VB que je suis tombé sur 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 (tels que MS Office):

" avant d'aller plus loin, clarifions simplement sur point fondamental. Visual Basic pour les 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 de langage de cet environnement est VBA."

Les différences mineures

Hosted vs. stand-alone: en pratique, 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 fournis avec MS Office est presque identique à Visual Studio 6, avec la limitation qu'il ne permet pas la compilation de fichiers dll ou exe autonomes. Cela signifie à son tour que les classes définies dans les projets VBA embarqués ne sont pas accessibles à partir de consommateurs COM Non embarqués, car ils ne peuvent pas être enregistrés.

Développement continu : Microsoft a cessé de produire un compilateur VBA autonome avec Visual Studio 6, car ils sont passés au. Net l'exécution de la plate-forme de choix. Cependant, L'équipe MS Office continue de maintenir VBA, et même publié une nouvelle version (VBA7) avec une nouvelle machine virtuelle (maintenant juste appelé 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 a quelques améliorations pour gérer les différences entre les deux, en particulier en ce qui concerne les invocations D'API externes.

33
répondu Joshua Honig 2014-03-24 13:46:10

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

  • Ecrire des macros (=routines automatisées pour les petites tâches récurrentes dans votre bureau-travail)
  • Définir de nouvelles fonctions pour excel-la cellule de la formule
  • 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 séparés 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).

14
répondu Dario 2009-06-14 18:00:47

En fait, VBA peut être utilisé pour compiler des dll. Les éditions Office 2000 et Office XP Developer incluaient un éditeur VBA qui pouvait être utilisé pour créer des DLL à utiliser en tant QU'Addins 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 créer des addins COM de la même manière sans l'utilisation de VSTO (ou VS.Net) en utilisant VB6 IDE.

10
répondu Skip R 2018-04-30 10:04:42

C'est VBA. VBA signifie Visual Basic pour les Applications , et il est utilisé pour les macros sur les documents Office. Il n'a pas accès à VB.NET caractéristiques, donc c'est plus comme une version modifiée de VB6, avec des add-ons pour pouvoir travailler sur le document (comme la feuille de calcul dans VBA pour Excel).

6
répondu instanceof me 2009-06-14 17:50:12

VB n'est pas une langue. VB est un programme qui héberge VBA, tout comme les hôtes de bureau VBA. VB est un ensemble D'objets App, tout comme Word et Excel, et un package forms, tout comme dans Office.

Vous ne pouvez donc écrire que du code VBA dans VB.

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

À Partir de VBA Info

VBA 6, a été livré en 1998 et comprend une myriade d'hôtes sous licence, parmi eux: Office 2000 - 2010, AutoCAD, PI Processbook, et le Visual Basic 6.0 autonome

5
répondu Serenity 2015-04-10 22:52:14

VBA signifie Visual Basic pour les Applications et c'est une implémentation Visual Basic destinée à être utilisée dans la suite Office.

La différence entre eux est que VBA est intégré dans les documents Office (c'est une fonctionnalité Office). VB est l'ide / langage pour le développement d'applications.

4
répondu Victor 2009-06-14 17:50:59

VB (Visual Basic uniquement jusqu'à 6.0) est un sur-Ensemble de VBA (Visual Basic pour les Applications). Je sais que d'autres ont en quelque sorte échappé à cela, mais ma compréhension est que la sémantique (c'est-à-dire le vocabulaire) de VBA est incluse dans VB6 (sauf pour les objets spécifiques aux produits Office), par conséquent, VBA est 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 parce qu'ils ont des finalités différentes. Plus précisément, le but de VBA est d'automatiser par programmation les tâches qui peuvent être effectuées dans MS Office, tandis que le but de VB6 est de créer des contrôles EXE, ActiveX, DLL ActiveX et ActiveX Exes standard qui peuvent fonctionner seuls ou dans D'autres programmes tels que MS Office ou Windows.

1
répondu user65795 2015-08-28 04:14:38