关于vb6:Visual Basic 6.0和VBA之间的区别

Difference between Visual Basic 6.0 and VBA

这两者有什么区别。我一直认为vb a是vb的"残废"版本,但有一天一个朋友问我,我不知道实际的区别是什么。

另外,当您使用Excel时,它是VB还是VBA?


对于几乎所有的编程目的,vba和vb 6.0是相同的。

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

除此之外,IDE还有一个不同之处——与之相比,vb 6.0ide更强大。另一方面,您可以将宿主应用程序紧密集成到VBA中。应用程序全局对象(如"activedocument")和事件在没有声明的情况下可用,因此特定于应用程序的编程是直接进行的。

不过,没有什么能阻止您启动Word、加载VBA IDE和解决与Word无关的问题。我不确定vb 6.0是否可以做任何事情(技术上),vba不能。不过,我想在msdn上找一份比较表。


vba代表Visual Basic for Applications,vb的"for Applications"脚本兄弟也是如此。vba确实可以在Excel中使用,但也可以在其他Office应用程序中使用。

使用vb,可以创建独立的Windows应用程序,这在vb a中是不可能的。

然而,开发人员可以将VBA"嵌入"到自己的应用程序中,作为自动化这些应用程序的脚本语言。

编辑:来自VBA常见问题解答:

Q. What is Visual Basic for Applications?

A. Microsoft Visual Basic for Applications (VBA) is an embeddable programming environment designed to enable developers to build custom solutions using the full power of Microsoft Visual Basic. Developers using applications that host VBA can automate and extend the application functionality, shortening the development cycle of custom business solutions.

注意,vb.net甚至是另一种语言,它只与vb共享语法。


对于一个古老的问题,这里有一个更为技术和彻底的答案:Visual Basic for Applications(VBA)和Visual Basic(pre-.net)不仅是相似的语言,而且是相同的语言。明确地:

  • 它们具有相同的规范:对语言包含的内容及其含义的独立于实现的描述。您可以在此处阅读:【ms-vbal】:vba语言规范
  • 它们具有相同的平台:它们都编译为Microsoft P代码,然后由完全相同的虚拟机执行,该虚拟机在dll msvbvm[x.0].dll中实现。

在去年我遇到的一本旧的vb参考书中,作者(PaulLomax)甚至断言"vba"始终是语言本身的名称,无论是在独立应用程序中还是在嵌入式环境中(如MS Office):

"Before we go any further, let's just clarify on fundamental point. Visual Basic for Applications (VBA) is the language used to program in Visual Basic (VB). VB itself is a development environment; the language element of that environment is VBA."

细微差别

托管与独立:在实践中,当大多数人说"vba"时,他们特别指"在MS Office中使用的vba",他们说"vb6"指"在独立vba编译器的最后一个版本(即Visual Studio 6)中使用的vba"。与MS Office捆绑在一起的IDE和编译器几乎与Visual Studio 6相同,但其限制是不允许编译独立的dll或exe文件。这反过来意味着在嵌入式VBA项目中定义的类不能从非嵌入式COM使用者访问,因为它们不能注册。

继续开发:微软停止生产带有Visual Studio 6的独立的VBA编译器,因为他们选择了.NET运行时作为平台。但是,MS Office团队继续维护vba,甚至发布了一个新版本(vba7),其中包含一个新的vm(现在称为vba7.dll),从MS Office 2010开始。唯一的主要区别是,vba7既有32位版本,也有64位版本,并且有一些增强功能来处理两者之间的差异,特别是在外部API调用方面。


是否要将vba与vb classic(vb6..)或vb.net进行比较?

vb a(Visual Basic for Applications)是一种嵌入在Microsoft Office应用程序中的基于VB经典的脚本语言。我认为它的语言特性与vb5相似(它只是缺少一些内置函数),但是:

您可以访问为其编写VBA脚本的Office文档,因此可以例如

  • 编写宏(用于办公室工作中小的重复性任务的自动例行程序)
  • 为Excel单元格公式定义新函数
  • 处理办公室数据

示例:设置Excel单元格的值

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

vbc和-.net不是脚本语言。您可以使用它们编写独立的应用程序,使用独立的IDE,但不能使用VBA(VBA脚本只在Office中"存在")。

vb a与vb.net没有任何关系(它们只是有类似的语法)。


实际上,vba可以用来编译dll。Office2000和OfficeXP开发人员版本包括一个可以用来制作DLL以用作COM加载项的VBA编辑器。

随着vsto(vs tools for office)软件的出现,此功能在更高版本(2003和2007)中被删除,但显然,您仍然可以使用vb6-ide以类似的方式创建COM加载项,而无需使用vsto(或vs.net)。


是VBA。vba表示Visual Basic for Applications,用于Office文档中的宏。它不能访问vb.net功能,因此它更像是修改过的vb6版本,带有能够处理文档的加载项(如vb a for excel中的工作表)。


VB不是一种语言。vb是一个托管vb a的程序,就像Office托管vba一样。vb是一组应用程序对象,就像Word和Excel一样,还有一个表单包,就像在Office中一样。

所以只能用vb编写vba代码。

PS此信息位于VB问题页上的"信息"选项卡上。

从VBA信息

VBA 6, was shipped in 1998 and includes a myriad of licensed hosts, among them: Office 2000 - 2010, AutoCAD, PI Processbook, and the stand-alone Visual Basic 6.0


vba代表Visual Basic for Applications,它是一种用于Office套件的Visual Basic实现。

它们之间的区别在于,VBA嵌入在Office文档(它是Office功能)中。VB是开发应用程序的IDE/语言。


vb(仅限于6.0以下的Visual Basic)是vb a(Visual Basic for Applications)的超集。我知道有些人对此有所逃避,但我的理解是,vba的语义(即词汇)包含在vb6中(办公产品特有的对象除外),因此,vba是vb6的一个子集。语法(即字的书写顺序)在vba中与在vb6中完全相同,但区别在于vba或vb6可用的对象不同,因为它们具有不同的用途。具体来说,vba的目的是程序化地自动化可以在MS Office中完成的任务,而vb6的目的是创建标准的exe、ActiveX控件、ActiveX dll和ActiveX exe s,它们可以独立工作,也可以在MS Office或Windows等其他程序中工作。