Visual Basic 6.0和VBA之间的区别

时间:2009-06-14 17:43:28

标签: vba vb6

两者有什么区别。我一直认为VBA是VB的某种“残缺”版本,但有一天朋友问我时,我不知道实际的差异是什么。

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

9 个答案:

答案 0 :(得分:168)

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

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

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

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

答案 1 :(得分:44)

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

使用VB,可以创建一个独立的Windows应用程序,这在VBA中是不可能的。

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

修改:来自VBA FAQ

  

问。什么是Visual Basic for Applications?

     

A。 Microsoft Visual Basic for Applications(VBA)是一个可嵌入的编程环境,旨在使开发人员能够使用Microsoft Visual Basic的全部功能构建自定义解决方案。使用托管VBA的应用程序的开发人员可以自动化和扩展应用程序功能,缩短自定义业务解决方案的开发周期。

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

答案 2 :(得分:37)

这里是一个更老的问题的技术和彻底的答案:Visual Basic for Applications(VBA)和Visual Basic(pre-.NET)不仅仅是类似的语言,它们是相同的语言。具体做法是:

去年{{3}},作者(Paul Lomax)甚至断言“VBA'一直是语言本身的名称,无论是在独立应用程序中使用还是在嵌入式上下文中使用(例如MS Office):

  

"在我们继续前进之前,让我们澄清基本点。 Visual Basic for Applications(VBA)是用于在Visual Basic(VB)中编程的语言。 VB本身就是一个开发环境;该环境的语言元素是VBA。"

次要差异

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

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

答案 3 :(得分:15)

您想要将VBA与VB-Classic(VB6 ..)或VB.NET进行比较吗?

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

您可以访问您编写VBA脚本的office文档,因此您可以这样做。

  • 编写宏(=自动例程,用于办公室工作中的少量重复任务)
  • 为excel-cell-formula定义新功能
  • 处理办公室数据

示例:设置excel-cell的值

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

VBC和-.NET不是脚本语言。您可以使用它们编写具有单独IDE的独立应用程序,而VBA无法对其进行编写(VBA脚本在Office中“存在”)

VBA与VB.NET无关(它们只有类似的语法)。

答案 4 :(得分:11)

实际上VBA可用于编译DLL。 Office 2000和Office XP Developer版本包含一个VBA编辑器,可用于制作用作COM Addins的DLL。

随着VSTO(VS Tools for Office)软件的出现,此功能在更高版本(2003和2007)中被删除,但显然您仍然可以在不使用VSTO(或VS.)的情况下以类似的方式创建COM插件。 Net)使用VB6 IDE。

答案 5 :(得分:6)

这是VBA。 VBA表示Visual Basic for Applications,它用于Office文档上的宏。它无法访问VB.NET功能,因此它更像是VB6的修改版本,附加组件能够处理文档(如VBA for Excel中的Worksheet)。

答案 6 :(得分:5)

VB不是一种语言。 VB是托管VBA的程序,就像Office托管VBA一样。 VB是一组App对象,就像Word和Excel一样,以及一个表单包,就像在Office中一样。

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

PS 此信息位于VB的 VB问题页面的 INFO 标签上。

来自VBA信息

  

VBA 6于1998年发布,包括无数许可的主机,其中包括:Office 2000 - 2010,AutoCAD,PI Processbook和独立的Visual Basic 6.0

答案 7 :(得分:4)

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

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

答案 8 :(得分:1)

VB(Visual Basic最高为6.0)是VBA(Visual Basic for Applications)的超集。我知道其他人对此有所不同,但我的理解是VBA的语义(即词汇表)包含在VB6中(Office产品特有的对象除外),因此,VBA是VB6的子集。语法(即写入单词的顺序)在VBA中与在VB6中完全相同,但不同之处在于VBA或VB6可用的对象是不同的,因为它们具有不同的目的。具体来说,VBA的目的是以编程方式自动执行可在MS Office中完成的任务,而VB6的目的是创建标准EXE,ActiveX控件,ActiveX DLL和ActiveX EXE,它们可以单独工作或在其他工作中工作程序,如MS Office或Windows。