Visual Basic 6.0和VBA的区别

两者有什么区别? 我一直以为VBA是VB的一个“跛脚”版本,但是当有朋友问我有一天,我不知道实际的区别是什么。

另外,例如使用Excel时,是VB还是VBA?

几乎所有的编程目的,VBA和VB 6.0都是一样的。

VBA无法将您的程序编译为可执行的二进制文件。 您将始终需要主机(例如Word文件和MS Word)来包含和执行您的项目。 您也将无法使用VBA创buildCOM DLL。

除此之外,在IDE中还是有所不同的 – 相比之下,VB 6.0 IDE更强大。 另一方面,您在VBA中紧密集成了主机应用程序。 应用程序全局对象(如“ActiveDocument”)和事件可以不经过声明,因此特定于应用程序的编程非常简单。

但是,没有什么能够阻止你启动Word,加载VBA IDE并解决与Word无关的问题。 我不确定VB 6.0可以做什么(技术上),VBA不能。 我正在寻找MSDN上的比较表。

VBA代表Visual Basic的应用程序 ,所以VB的小应用程序脚本兄弟。 VBA确实在Excel中可用,但在其他办公应用程序中也是如此。

使用VB,可以创build一个独立的Windows应用程序,这对于VBA是不可能的。

然而,开发人员可以将VBA“embedded”自己的应用程序,作为脚本语言来自动化这些应用程序。

编辑 :从VBA常见问题解答 :

问:什么是Visual Basic for Applications?

答: Microsoft Visual Basic for Applications(VBA)是一个embedded式编程环境,旨在使开发人员能够使用Microsoft Visual Basic的全部function构build自定义解决scheme。 使用托pipeVBA的应用程序的开发人员可以自动化和扩展应用程序function,缩短定制业务解决scheme的开发周期。

请注意,VB.NET甚至是另一种语言,它只与VB共享语法。

对于一个老问题,下面是一个更加技术性和彻底的答案:Visual Basic for Applications(VBA)和Visual Basic(pre-.NET)不仅仅是相似的语言,它们是相同的语言。 特别:

  • 它们具有相同的规范 :与语言包含的内容以及其含义有关的与实现无关的描述。 你可以在这里阅读: [MS-VBAL]:VBA语言规范
  • 他们有相同的平台 :他们都编译到微软的P代码 ,这反过来执行完全相同的虚拟机,这是在DLL msvbvm [x.0] .dll实施。

作者(Paul Lomax) 在去年接触过的一本旧的VB参考书中甚至断言,“VBA”一直是该语言本身的名称,无论是在独立应用程序还是在embedded式环境中使用(如MS Office ):

“在我们进一步讨论之前,我们先来澄清一下基本问题,Visual Basic for Applications(VBA)是用来在Visual Basic(VB)中编程的语言,VB本身是一个开发环境,该环境的语言元素是VBA。 “

微小的差异

托pipe与独立 :实际上,当大多数人说“VBA”时,他们特指“VBA在MS Office中使用”,他们说“VB6”意思是“VBA在独立VBA的最新版本中使用编译器(即Visual Studio 6)“。 与MS Office捆绑在一起的IDE和编译器几乎与Visual Studio 6完全相同,限制了它不允许编译为独立的dll或exe文件。 这又意味着embedded式VBA项目中定义的类不能从非embedded式COM使用者访问,因为它们不能被注册。

继续开发 :微软停止使用Visual Studio 6生成独立的VBA编译器,因为他们切换到.NET运行时作为select的平台。 但是,MS Office团队继续维护VBA,甚至从MS Office 2010开始,发布了一个新的VM(现在叫做VBA7.dll)的版本(VBA7)。唯一的区别是VBA7同时拥有一个32-和64位版本,并具有一些增强function来处理两者之间的差异,特别是外部API调用。

你想比较VBA与VB-Classic(VB6 ..)或VB.NET吗?

VBA(Visual Basic for Applications)是embedded在Microsoft Office应用程序中的基于vb-classic的脚本语言。 我认为它的语言特性与VB5类似(它只是缺less一些内置函数),但是:

您可以访问您编写VBA脚本的办公文档,例如您可以

  • 编写macros(=在你的办公室工作的小循环任务的自动化例程)
  • 为excel-cell-formula定义新的函数
  • 处理办公室数据

示例:设置一个excel单元格的值

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

VBC和-.NET不是脚本语言。 您可以使用它们来编写独立的应用程序,这些独立的应用程序不能使用VBA(VBA脚本只是在Office中“存在”),

VBA与VB.NET无关(他们只是有一个类似的语法)。

其实VBA可以用来编译DLL。 Office 2000和Office XP Developer版本包含一个VBA编辑器,可用于制作用作COM加载项的DLL。

随着VSTO软件的出现,在更高版本(2003和2007)中删除了这个function,但显然你仍然可以通过使用VB6 IDE以类似的方式创buildCOM插件而不使用VSTO(或VS.Net)。

这是VBA。 VBA表示Visual Basic for Applications ,它用于Office文档上的macros。 它无法访问VB.NETfunction,所以它更像是一个VB6的修改版本,可以使用附件来处理文档(如Excel中的Worksheet)。

VB不是一种语言 。 VB是一个宿主VBA的程序,就像Office主机VBA一样。 VB是一组App对象,就像Word和Excel一样,还有一个Forms包,就像在Office中一样。

所以你只能在VB中编写VBA代码。

PS此信息是在VB的VB问题页上的信息选项卡上。

从VBA信息

VBA 6于1998年发货,包括众多的许可主机,其中包括:Office 2000 – 2010,AutoCAD,PI Processbook和独立的Visual Basic 6.0

VBA代表Visual Basic For Applications及其在Office套件中使用的Visual Basic实现。

它们之间的区别在于VBAembedded在Office文档(其Officefunction)中。 VB是开发应用程序的ide /语言。

VB(Visual Basic仅限于6.0)是VBA(Visual Basic for Applications)的超集。 我知道其他人对此有所了解,但我的理解是VBA的语义(即词汇)包含在VB6中(除了Office产品特有的对象外),因此VBA是VB6的一个子集。 语法(即写入的顺序)在VBA中与在VB6中完全相同,但不同之处在于可用于VBA或VB6的对象因目标不同而不同。 具体而言,VBA的目的是以编程方式自动执行在MS Office中可以完成的任务,而VB6的目的是创build标准EXE,ActiveX控件,ActiveX DLL和ActiveX EXE,这些EXE可以独立运行,也可以在MS Office或Windows等其他程序中运行。