Разница между Visual Basic 6.0 и VBA - PullRequest
201 голосов
/ 14 июня 2009

В чем разница между двумя. Я всегда думал, что VBA - это несколько «урезанная» версия VB, но когда один из друзей спросил меня на днях, я понятия не имел, каковы реальные различия.

Кроме того, когда вы используете, например, Excel, это VB или VBA?

Ответы [ 9 ]

168 голосов
/ 14 июня 2009

Практически для всех целей программирования VBA и VB 6.0 - это одно и то же.

VBA не может скомпилировать вашу программу в исполняемый двоичный файл. Вам всегда понадобится хост (например, файл Word и MS Word) для хранения и выполнения вашего проекта. Вы также не сможете создавать COM DLL с помощью VBA.

Кроме того, есть разница в IDE - VB 6.0 IDE является более мощным по сравнению. С другой стороны, у вас есть тесная интеграция хост-приложения в VBA. Глобальные объекты приложения (например, «ActiveDocument») и события доступны без объявления, поэтому программирование для конкретного приложения является простым.

Тем не менее, ничто не мешает вам запускать Word, загружать VBA IDE и решать проблему, не имеющую никакого отношения к Word. Я не уверен, что есть что-то, что может сделать VB 6.0 (технически), а VBA - нет. Я ищу сравнительный лист на MSDN.

44 голосов
/ 14 июня 2009

VBA расшифровывается как Visual Basic для приложений , как и маленький брат VB для сценариев "для приложений". VBA действительно доступен в Excel, но также и в других офисных приложениях.

С помощью VB можно создать отдельное приложение Windows, что невозможно с VBA.

Однако разработчики могут "встраивать" VBA в свои собственные приложения в качестве языка сценариев для автоматизации этих приложений.

Редактировать : из FAQ по VBA :

Q. Что такое Visual Basic для приложений?

A. Microsoft Visual Basic для приложений (VBA) - это встраиваемая среда программирования, позволяющая разработчикам создавать собственные решения с использованием всех возможностей Microsoft Visual Basic. Разработчики, использующие приложения, в которых размещается VBA, могут автоматизировать и расширять функциональность приложения, сокращая цикл разработки пользовательских бизнес-решений.

Обратите внимание, что VB.NET - это даже другой язык, который использует синтаксис только с VB.

37 голосов
/ 24 марта 2014

Вот более технический и подробный ответ на старый вопрос: Visual Basic для приложений (VBA) и Visual Basic (до .NET) - это не просто похожие языки, это один и тот же язык. В частности:

  • Они имеют одинаковую спецификацию : независимое от реализации описание того, что содержит язык и что оно означает. Вы можете прочитать его здесь: [MS-VBAL]: спецификация языка VBA
  • Они имеют одинаковую платформу : оба компилируются в Microsoft P-Code , который, в свою очередь, выполняется точно такой же виртуальной машиной, которая реализована в dll msvbvm [ X.0] .dll.

В старом справочнике по VB, с которым я сталкивался в прошлом году , автор (Пол Ломакс) даже утверждал, что «VBA» всегда был названием самого языка, независимо от того, использовался ли он в автономных приложениях. или во встроенных контекстах (таких как MS Office):

"Прежде чем мы пойдем дальше, давайте просто проясним фундаментальный момент. Visual Basic для приложений (VBA) - это язык, используемый для программирования в Visual Basic (VB). Сам VB является средой разработки; языковой элемент этой среды такое VBA. "

Незначительные отличия

Хостинг против автономного : На практике, когда большинство людей говорят «VBA», они конкретно обозначают «VBA при использовании в MS Office», а «VB6» означает «VBA». использовался в последней версии автономного компилятора VBA (т.е. Visual Studio 6) ". IDE и компилятор в комплекте с MS Office практически идентичны Visual Studio 6, за исключением того, что они не позволяют выполнять компиляцию в автономные dll или exe-файлы. Это, в свою очередь, означает, что классы, определенные во встроенных проектах VBA, недоступны для не встроенных потребителей COM, поскольку они не могут быть зарегистрированы.

Продолжение разработки : Microsoft прекратила выпускать автономный компилятор VBA с Visual Studio 6, поскольку они переключились на среду выполнения .NET в качестве предпочтительной платформы. Тем не менее, команда MS Office продолжает поддерживать VBA и даже выпустила новую версию (VBA7) с новой виртуальной машиной (теперь называемой только VBA7.dll), начиная с MS Office 2010. Единственное существенное отличие состоит в том, что VBA7 имеет 32- и 64-битная версия и имеет несколько улучшений для обработки различий между ними, особенно в отношении вызовов внешнего API.

15 голосов
/ 14 июня 2009

Хотите сравнить VBA с VB-Classic (VB6 ..) или VB.NET?

VBA (Visual Basic для приложений) - это язык сценариев на основе vb-classic, встроенный в приложения Microsoft Office. Я думаю, что его языковые возможности аналогичны VB5 (ему просто не хватает нескольких встроенных функций), но:

У вас есть доступ к офисному документу, для которого вы написали VBA-скрипт, и вы можете, например,

  • Напишите макросы (= автоматизированные процедуры для небольших повторяющихся задач в вашей офисной работе)
  • Определить новые функции для Excel-Cell-Formula
  • Обработка данных офиса

Пример: установка значения в Excel-ячейке

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

VBC и -.NET не являются языками сценариев. Вы используете их для написания автономных приложений с отдельными IDE, которые вы не можете сделать с VBA (VBA-скрипты просто «существуют» в Office)

VBA не имеет ничего общего с VB.NET (у них просто похожий синтаксис).

11 голосов
/ 15 июня 2009

На самом деле VBA может использоваться для компиляции DLL. В редакции Office 2000 и Office XP Developer включен редактор VBA, который можно использовать для создания библиотек DLL для использования в качестве надстроек COM.

Эта функциональность была удалена в более поздних версиях (2003 и 2007) с появлением программного обеспечения VSTO (VS Tools для Office), хотя очевидно, что вы все еще можете создавать надстройки COM аналогичным образом без использования VSTO (или VS. Net) с помощью VB6 IDE.

6 голосов
/ 14 июня 2009

Это VBA. VBA означает Visual Basic для приложений и используется для макросов в документах Office. Он не имеет доступа к функциям VB.NET, поэтому он больше похож на модифицированную версию VB6 с надстройками для работы с документом (например, с рабочим листом в VBA для Excel).

5 голосов
/ 11 апреля 2015

VB не является языком . VB - это программа, в которой размещается VBA, так же, как в Office размещается VBA. VB - это набор объектов App, как в Word и Excel, и пакет форм, как в Office.

Таким образом, вы можете писать код VBA только в VB.

PS эта информация находится на вкладке ИНФО на странице Вопрос VB для VB.

Из VBA Info

VBA 6, был выпущен в 1998 году и включает в себя множество лицензированных хостов, среди которых: Office 2000 - 2010, AutoCAD, PI Processbook и автономный Visual Basic 6.0

.
4 голосов
/ 14 июня 2009

VBA означает Visual Basic For Applications и реализацию Visual Basic, предназначенную для использования в Office Suite.

Разница между ними заключается в том, что VBA встроен в документы Office (это функция Office). VB - это иде / язык для разработки приложений.

1 голос
/ 28 августа 2015

VB (Visual Basic только до 6.0) - это расширенный набор VBA (Visual Basic для приложений). Я знаю, что другие отчасти ускользали от этого, но, насколько я понимаю, семантика (то есть словарь) VBA включена в VB6 (за исключением объектов, специфичных для продуктов Office), поэтому VBA является подмножеством VB6. Синтаксис (т. Е. Порядок, в котором написаны слова) в VBA точно такой же, как и в VB6, но различие заключается в том, что объекты, доступные для VBA или VB6, различны, поскольку они имеют разные цели. В частности, целью VBA является программная автоматизация задач, которые можно выполнять в MS Office, тогда как целью VB6 является создание стандартных EXE, ActiveX Controls, ActiveX DLL и ActiveX EXE, которые могут работать как отдельно, так и в других программах, таких как MS Office или Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...