这两者有何区别?我一直以为VBA是VB的某种'残障'版本,但前几天一个朋友问起我时,我不知道实际差异在哪里。
此外,当你使用例如Excel这样的软件时,那是VB还是VBA?
几乎所有编程目的上,VBA和VB 6.0是一样的。
VBA无法将您的程序编译为可执行二进制文件。您将始终需要宿主(例如Word文件和MS Word)来包含和执行您的项目。您也无法使用VBA创建COM DLL。
除此之外,IDE中有一个区别-与VB 6.0 IDE相比,VBA更加强大。另一方面,在VBA中,宿主应用程序的紧密集成使得应用特定的编程变得简单明了,并且全局对象(如“ActiveDocument”)和事件可以在不声明的情况下使用。
尽管如此,没有任何事情阻止您启动Word,加载VBA IDE并解决与Word毫无关系的问题。我不确定VB 6.0可以做到而VBA不能(从技术上讲),但我正在MSDN上寻找比较表。
VBA代表Visual Basic for Applications,是VB的小型“应用程序”脚本兄弟。VBA确实可用于Excel,但也可用于其他办公应用程序。
使用VB,可以创建独立的Windows应用程序,这在VBA中不可能。
然而,开发人员可以将VBA“嵌入”到自己的应用程序中,作为脚本语言来自动化这些应用程序。
编辑:来自VBA FAQ:
问。 什么是Visual Basic for Applications?
答。 Microsoft Visual Basic for Applications(VBA)是一个可嵌入的编程环境,旨在使开发人员能够使用Microsoft Visual Basic的全部功能构建自定义解决方案。使用托管VBA的应用程序的开发人员可以自动化和扩展应用程序功能,缩短自定义业务解决方案的开发周期。
请注意,VB.NET甚至是另一种语言,只与VB共享语法。
在我去年看到的一本旧VB参考书中,作者(Paul Lomax)甚至断言,“VBA”一直是语言本身的名称,无论是在独立应用程序中使用还是在嵌入式上下文中使用(例如MS Office):
在我们继续之前,让我们澄清一个基本点。Visual Basic for Applications (VBA) 是用于编写 Visual Basic (VB) 的语言。VB 本身是一个开发环境;该环境的语言元素是 VBA。您是想将VBA与VB-Classic(VB6..)或VB.NET进行比较吗?
VBA(Visual Basic for Applications)是Microsoft Office应用程序中嵌入的基于VB-Classic的脚本语言。我认为它的语言特性类似于VB5(只是缺少一些内置函数),但:
您可以访问您编写VBA脚本的Office文档,因此您可以:
示例:设置Excel单元格的值
ActiveSheet.Cells("A1").Value = "Foo"
VBC 和 .NET 不是脚本语言。你可以使用它们编写独立的应用程序,并使用单独的 IDE,而这是 VBA 无法做到的(VBA 脚本仅"存在"于 Office 中)。
VBA 与 VB.NET 没有任何关系(它们只是具有类似的语法)。
实际上,VBA可以用于编译DLL。Office 2000和Office XP开发者版本包括一个可用于制作用作COM插件的DLL的VBA编辑器。
随着VSTO(VS Office工具)软件的出现,这个功能在后来的版本(2003和2007)中被删除,尽管显然你仍然可以通过使用VB6 IDE而不是VSTO(或VS.Net)以类似的方式创建COM插件。
这是VBA。VBA代表Visual Basic for Applications,用于Office文档的宏。它没有访问VB.NET功能的权限,因此更像是VB6的修改版本,具有附加组件以便能够在文档上工作(例如,在Excel中使用的VBA工作表)。
VB不是一种编程语言。VB是一个程序,它托管VBA,就像Office托管VBA一样。VB是一组应用程序对象,就像Word和Excel一样,还有一个表单包,就像Office中的表单一样。
因此,你只能在VB中编写VBA代码。
PS这些信息在VB问题页面的INFO选项卡上。
来自VBA信息
VBA 6于1998年发布,包括许多授权主机,其中包括:Office 2000-2010、AutoCAD、PI Processbook以及独立的Visual Basic 6.0
VBA指的是Visual Basic For Applications,它是一种旨在用于Office套件中的Visual Basic实现。
它们之间的区别在于VBA嵌入在Office文档中(这是Office的一个特性)。VB是开发应用程序的IDE /语言。