提问人:Thomas Geritzma 提问时间:6/15/2009 最后编辑:TomalakThomas Geritzma 更新时间:4/30/2018 访问量:190339
Visual Basic 6.0 和 VBA 之间的区别
Difference between Visual Basic 6.0 and VBA
答:
这是 VBA。VBA 表示 Visual Basic for Applications,它用于 Office 文档上的宏。它无法访问 VB.NET 功能,因此它更像是 VB6 的修改版本,带有能够处理文档的附加组件(例如 VBA for Excel 中的工作表)。
评论
VBA 代表 Visual Basic For Applications,它是旨在在 Office 套件中使用的 Visual Basic 实现。
它们之间的区别在于 VBA 嵌入在 Office 文档中(它是 Office 的一项功能)。VB 是用于开发应用程序的 ide/语言。
VBA 代表 Visual Basic for Applications,因此也是 VB 的小型“for applications”脚本兄弟。 VBA 确实可以在 Excel 中使用,但也可以在其他办公应用程序中使用。
使用 VB,可以创建独立的 Windows 应用程序,这是 VBA 无法实现的。
但是,开发人员可以将 VBA“嵌入”到他们自己的应用程序中,作为脚本语言来自动化这些应用程序。
编辑:从VBA常见问题解答中:
问。什么是 Visual Basic for Applications?
一个。Microsoft Visual Basic for Applications (VBA) 是一个可嵌入的编程环境,旨在使开发人员能够使用 Microsoft Visual Basic 的全部功能构建自定义解决方案。使用托管 VBA 的应用程序的开发人员可以自动执行和扩展应用程序功能,从而缩短自定义业务解决方案的开发周期。
请注意,VB.NET 甚至是另一种语言,它只与 VB 共享语法。
评论
您想将VBA与VB-Classic(VB6...)或 VB.NET 进行比较吗?
VBA(Visual Basic for Applications)是嵌入在 Microsoft Office 应用程序中的基于 VB-Classic 的脚本语言。我认为它的语言功能类似于 VB5 的语言功能(它只是缺少一些内置功能),但是:
您可以访问为其编写 VBA 脚本的办公文档,因此您可以例如
- 编写宏(=办公室工作中重复性小任务的自动化例程)
- 为 excel-cell-formula 定义新函数
- 处理办公室数据
示例:设置 excel-cell 的值
ActiveSheet.Cells("A1").Value = "Foo"
VBC 和 -.NET 不是脚本语言。您可以使用它们来编写具有单独 IDE 的独立应用程序,而 VBA 无法做到这一点(VBA 脚本只是“存在于”Office 中)
VBA 与 VB.NET 无关(它们只是具有相似的语法)。
对于几乎所有的编程目的,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 开发人员版本包括一个 VBA 编辑器,可用于制作用作 COM 加载项的 DLL。
随着 VSTO(VS Tools for Office)软件的出现,此功能在更高版本(2003 年和 2007 年)中删除,尽管显然您仍然可以使用类似的方式创建 COM 加载项,而无需使用 VSTO(或 VS.Net)通过使用 VB6 IDE。
评论
这是对一个老问题的更专业、更彻底的回答:Visual Basic for Applications (VBA) 和 Visual Basic (pre-.NET) 不仅是相似的语言,而且是同一种语言。具体说来:
- 它们具有相同的规范:对语言包含的内容及其含义进行与实现无关的描述。您可以在此处阅读:[MS-VBAL]:VBA 语言规范
- 它们具有相同的平台:它们都编译为 Microsoft P 代码,而 P 代码又由完全相同的虚拟机执行,该虚拟机在 dll msvbvm[x.0].dll 中实现。
在我去年看到的一本旧的VB参考书中,作者(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 调用方面。
评论
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
评论
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)中工作。
评论
下一个:Excel VBA - 退出循环
评论