Answers:
对于几乎所有编程目的,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上的比较表。
VBA代表Visual Basic for Applications,VB的小型“ for Applications”脚本兄弟也是如此。实际上,VBA在Excel中可用,但在其他Office应用程序中也可用。
使用VB,可以创建一个独立的Windows应用程序,而使用VBA是不可能的。
但是,开发人员可以将VBA作为一种脚本语言“嵌入”自己的应用程序中,以使这些应用程序自动化。
编辑:从VBA常见问题解答:
问:什么是Visual Basic for Applications?
答: Microsoft Visual Basic应用程序(VBA)是一个可嵌入的编程环境,旨在使开发人员能够使用Microsoft Visual Basic的全部功能来构建自定义解决方案。使用托管VBA的应用程序的开发人员可以自动化和扩展应用程序功能,从而缩短自定义业务解决方案的开发周期。
请注意,VB.NET甚至是另一种语言,仅与VB共享语法。
这是对一个老问题的更为技术性和彻底的回答:Visual Basic for Applications(VBA)和Visual Basic(pre-.NET)不仅是相似的语言,而且是相同的语言。特别:
在我去年遇到的一本旧的VB参考书中,作者(Paul Lomax)甚至断言“ VBA”一直是该语言本身的名称,无论是在独立应用程序中还是在嵌入式上下文中使用(例如MS Office) ):
“在进一步研究之前,我们先澄清一下基本要点。VisualBasic for Applications(VBA)是用于在Visual Basic(VB)中进行编程的语言。VB本身是一个开发环境;该环境的语言元素是VBA。 ”
细微差异
托管与独立:相对而言,在大多数人说“ VBA”时,它们的具体含义是“在MS Office中使用时的VBA”,而在“ VB6”中则表示“在独立VBA的最新版本中使用的VBA”编译器(即Visual Studio 6)”。与MS Office捆绑在一起的IDE和编译器几乎与Visual Studio 6相同,其局限性在于它不允许编译为独立的dll或exe文件。反过来,这意味着非嵌入式COM使用者无法访问嵌入式VBA项目中定义的类,因为它们无法注册。
持续的开发:Microsoft停止使用Visual Studio 6生产独立的VBA编译器,因为他们选择了.NET运行时作为平台。但是,MS Office团队继续维护VBA,甚至从MS Office 2010开始发布了带有新VM(现在称为VBA7.dll)的新版本(VBA7)。唯一的主要区别是VBA7都具有32-和64位版本,并进行了一些改进以处理两者之间的差异,特别是在外部API调用方面。
您要比较VBA与VB-Classic(VB6 ..)还是VB.NET?
VBA(应用程序的Visual Basic)是嵌入在Microsoft Office应用程序中的基于vb-classic的脚本语言。我认为它的语言功能与VB5相似(只是缺少一些内置功能),但是:
您可以访问为其编写VBA脚本的Office文档,因此可以例如
示例:设置excel单元格的值
ActiveSheet.Cells("A1").Value = "Foo"
VBC和-.NET不是脚本语言。您可以使用它们来编写具有单独IDE的独立应用程序,而这些IDE不能通过VBA来完成(VBA脚本只是“存在于” Office中)
VBA与VB.NET无关(它们具有相似的语法)。
实际上,VBA可用于编译DLL。Office 2000和Office XP Developer版本包括一个VBA编辑器,该编辑器可用于制作用作COM加载项的DLL。
随VSTO(Office的VS工具)软件的出现,此功能在以后的版本(2003和2007)中被删除,尽管很明显,您仍然可以通过以下方式创建COM加载项而无需使用VSTO(或VS.Net):使用VB6 IDE。
是VBA。VBA表示Visual Basic for Applications,它用于Office文档上的宏。它无法访问VB.NET功能,因此它更像是VB6的修改版,带有可在文档上使用的附件(例如VBA for Excel中的工作表)。
VB不是一种语言。VB是一个托管VBA的程序,就像Office托管VBA一样。VB是一组应用程序对象,就像Word和Excel一样,还有一个表单包,就像Office中一样。
因此,您只能在VB中编写VBA代码。
PS此信息位于VB的VB问题页面的“ 信息”选项卡上。
从VBA信息
VBA 6于1998年交付,包括无数许可主机,其中包括:Office 2000-2010,AutoCAD,PI Processbook和独立的Visual Basic 6.0
VB(仅Visual Basic最高为6.0)是VBA(应用程序的Visual Basic)的超集。我知道其他人对此还不了解,但我的理解是VBA的语义(即词汇)包含在VB6中(Office产品特定的对象除外),因此,VBA是VB6的子集。VBA中的语法(即单词的写入顺序)与VB6中的语法完全相同,但不同之处在于VBA或VB6可用的对象不同,因为它们具有不同的用途。特别是VBA的目的是以编程方式自动化可以在MS Office中完成的任务,而VB6的目的是创建可以独立运行或在其他程序(例如MS Office或Windows)中运行的标准EXE,ActiveX控件,ActiveX DLL和ActiveX EXE。