两者有什么区别。我一直认为VBA是VB的某种“残缺”版本,但有一天朋友问我时,我不知道实际的差异是什么。
另外,例如,当您使用Excel时,是VB还是VBA?
答案 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的值
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。