两者的区别是什么?我一直认为VBA是VB的“残缺”版本,但当一个朋友前几天问我,我不知道实际的区别是什么。

另外,当你使用Excel时,你用的是VB还是VBA ?


当前回答

对于几乎所有的编程目的,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上的比较表。

其他回答

VB (Visual Basic only up to 6.0) is a superset of VBA (Visual Basic for Applications). I know that others have sort of eluded to this but my understanding is that the semantics (i.e. the vocabulary) of VBA is included in VB6 (except for objects specific to Office products), therefore, VBA is a subset of VB6. The syntax (i.e. the order in which the words are written) is exactly the same in VBA as it would be in VB6, but the difference is the objects available to VBA or VB6 are different because they have different purposes. Specifically VBA's purpose is to programatically automate tasks that can be done in MS Office, whereas VB6's purpose is to create standard EXE, ActiveX Controls, ActiveX DLLs and ActiveX EXEs which can either work stand alone or in other programs such as MS Office or Windows.

VBA。VBA的意思是Visual Basic for Applications,它用于Office文档中的宏。它不能访问VB。NET特性,所以它更像是一个VB6的修改版本,附加组件能够在文档上工作(就像VBA中的Excel工作表)。

对于几乎所有的编程目的,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可以用来编译dll。 Office 2000和Office XP Developer版本包括了一个VBA编辑器,可以用来制作dll作为COM插件使用。

随着VSTO (VS Tools for Office)软件的出现,这个功能在后来的版本(2003年和2007年)中被删除了,尽管很明显,你仍然可以使用VB6 IDE在不使用VSTO(或VS.Net)的情况下以类似的方式创建COM插件。

VBA是Visual Basic for Applications的缩写,它是一种用于Office Suite的Visual Basic实现。

它们之间的区别是VBA嵌入在Office文档中(这是Office的一个特性)。VB是开发应用程序的ide/语言。