VB和VBA详细的区别都用在什么地方

VB和VBA详细的区别都用在什么地方,第1张

首先VBS不应该和VB、VBA放在一起比较,它是微软按照自己定义的ActiveX Scripting规范完全从头开始写成的脚本语言,虽然它的语法结构和VB非常相似,但VBS仅仅依靠自动化对象来扩充其功能(只有后期绑定),它不能用implements来实现接口,不可能在VBS里直接使用API,没有VarPtr这样能得到指针的函数,而VBS缺少的这些功能正是VB和VBA所特有的。当然,这不是说VBS不如VB或VBA,Windows已经为VBS提供了足够强大的功能,我们可以用VBS来做脚本COM组件,而且借自动化对象的能力VBS可以说能力无限,所以有病毒用VBS来写,对程序员来说VBS最重要的功能莫过于可以给自己的软件提供宏功能,就象VC中提供的VBS宏功能那样。注意,VBS是Free的,这和在Office中使用VBA来提供宏功能不同,要集成VBA需要价格不低的许可证费用,关于脚本语言可参见MSDN中Platform SDK\Tools and Languages\Scripting。

那么VB和VBA又有什么不同呢?好吧,眼见为实,开始我们的实验吧!

如果装了Office 2000以上版本,那么打开OLEVIEW,点击File下的View TypeLib查看位于E:\Program Files\Common Files\Microsoft Shared\VBA\VBA6下的VBE6dll的类型库,再用同样的方法看看MSVBVM60dll的类型库,你会发现它们的类型库基本上一模一样,除了VBE6多了一个VBEGlobal接口和实现这个接口的Global对象,这个Global对象我们也可以在VBA编程环境(比如用WORD的VB编辑器)中用对象浏览器看到。它有二个方法Load和UnLoad,还有一个UserForms属性,这是因为VBA6使用MS Form 20 Form设计器(FM20dll)来设计和使用UserForm窗体(而在VB6中,我们可以使用多个设计器。比如通过使用MS Form 20 Form设计器,我们就能在VB中使用VBA所使用的UserForm用户窗体)。和VBA的Global对象类似,在VB中也有GLobal对象,从VB的对象浏览器中可以知道它在vb6olb这个类型库中,这个类型库就是每个工程都必须引用的VB对象库,所有的VB内置对象都在这里。而VBA的UserForm中使用的对象都在FM20dll中。

除了上述不同外,VB和VBA还有一个最大的不同,就是VBA不能生成EXE可执行文件,但可以猜想在IDE环境中VBA和VB都要把代码编译成p-code来执行,后面我将用实验来证明的确是这样,虽然在具体的实现上VB和VBA有很大的不同。

从上面的分析上可以看到VB和VBA还是有很大不同的,这种不同主要体现在编程环境和对象结构上,但在本质上它们之间却有着不可割舍的血源关系。如果刚才你仔细地观察了MSVBVM60dll的类型库,你就会发现如下的片断:

// Generated IDL file (by the OLE/COM Object Viewer)

[

dllname("VBA6DLL"),

uuid(35BFBDA0-2BCC-1069-82D5-00DD010EDFAA),

helpcontext(0x000f6ec4)

]

module Strings {

[entry(0x60000000), helpcontext(0x000f665f)]

short _stdcall Asc([in] BSTR String);

[entry(0x60000001), helpcontext(0x000f6e9f)]

BSTR _stdcall _B_str_Chr([in] long CharCode);

……………

}

什么?在MSVBVM60dll中的对象其方法却定义在VBA6DLL中?!VB安装目录下不就有个VBA6DLL吗?再用OLEVIEW看看它,哇噻,真是想不到它居然和MSVBVM60DLL的一模一样。怎么回事?赶快再拿出DEPEND来看看VBA6dll、MSVBVM60dll和VBE6dll这三个DLL的输出函数。哈,又有新发现,我们可以发现在三个DLL的输出函数中从编号512到717绝大部分都是一模一样的一些以rtc开头的函数,比如595的rtcMsgBox(rtc是什么?应该是Run Time Component Control Code有谁知道吗?),这说明三个DLL都有着相同的运行时VBA函数。

我们再用DEPEND来观察一下VB6EXE, 我们可以发现VB6EXE引入了VBA6DLL中一些它特有的以Eb和Tip开头的函数,从这些函数的名称上可以发现它们的功能都是IDE相关的,比如79的EbShowCode和82的TipDeleteModule。VB6EXE恰恰没有引入任何rtc开头的函数(注意一)。我们再来看看MSVBVM60DLL,随便找一个用了MsgBox函数的编译后的文件,用DEPEND来观察它,就会发现它引入MSVBVM60DLL输出的595号rtcMsgBox函数(注意二)。并且引入MSVBVM60DLL中很多以下划线开头的函数,比如__vbaVarAbs(注意三)。其实从这个三个"注意"中我们已经可以进行一些猜想,无论对错,你可以先想想。

如果你没有跟着我做实验,而仅仅是看这篇文章的话,我猜想你应该有点昏了。如果你自己动手做了这些实验,现在你应该充满了疑问而急侍看到结论。所以请一定要亲手试一试,学习研究问题的方法比看结论更重要。

到这里至少我们可以得出结论:VB和VBA本就是同宗的姐妹,只不过姐姐VB的功夫要比妹妹VBA历害些。不过姐姐只会单打独斗是女强人;妹妹却只会傍大款。姐姐有生育能力,是真正的女人;妹妹却不会生崽,但深谱相夫之道,一番教导指挥之下可使她老公增色不少,而VBS呢,也是大户人家的女儿,不过没有VB和VBA姐妹优秀的血统,娇小玲珑干不得粗活只能指挥些自动听话的对象来干活,她乐于助人品德好不象VBA那样只认大款,VB、VBA、vbs三个女人我都喜欢。

1、VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。它也可说是一种应用程式视觉化的 Basic 脚本。

2、1993年由微软公司开发的应用程序共享一种通用的自动化语言--------即Visual Basic for Application(VBA),实际上VBA是寄生于VB应用程序的版本。1994年发行的Excel 50版本中,即具备了VBA的宏功能。

VBA 全称是 Visual Basic Application 是 VB 的子集,相当于 VBScipt 与 VB 的关系(Microsoft Office 自带 VBA,作为宏处理,扩展可编程性)。 因此 VBA 不仅限于 Microsoft Office 软件,更不仅属于 Excel 中的应用了。

学好 VB 自然也就掌握 VBA 语法和运用,不过他们还是有点区别的(毕竟 VBA 只是 VB 的子集嘛)。

下面是传说中的备注:

======================================================================

VBA 往往依赖具体宿主,而不同宿主之间差别可能会很大,因此可能你学好了 VB 后,编写 VBA 方面的实际应用可能也不是一件轻松的事情。

譬如:

1)使用 VBA 进行 Excel 编程(此时 Excel 即是 VBA 宿主),那么你必须要了解 Excel 的内置对象,以及这些对象的属性、方法和作用。

2)若使用 VBA 进行 Access 或 Word 编程,那么你又必须了解 Access 或 Word 的内置对象了,以及这些对象的属性、方法和作用。

VBA,Visual Basic For Application的缩写,也叫做宏程序。是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。VBA必须要有一个宿主应用程序才能运行,而且不能用于创建独立应用程序。VBA可使常用的过程或者进程自动化,可以创建自定义的解决方案,适用于来定制已有的桌面应用程序。

故障分析:excel VBA其实就是大家代码编辑程序,有的人被人认为是宏,但是excel vba是包括宏程序的。下面还是一起来看看excel vba是什么如何打开

一、excel vba是什么

excel VBA中的vba是Visual Basic For Application的缩写。一般用来实现简单或中等的办公自动化应用。因为易学并且能很好的被office系列应用程序支持,因此得到了很广泛的应用。

二、excel vba怎么打开

先安装一个vba编辑器,在“Office共享功能”中有“Visual Basic for Application”,要安装。启动Excel后,选左上角的大点,Excel选项-》信任中心-》信任中心设置-》宏设置-》“禁用宏,并发出通知”。

提示:这时在打开有VBA的Excel,编辑栏在侧会有提示,一定要启用,否则无法编辑和使用VBA。

新手必知:打开Excel出现宏怎么解决

需要进入VBA编辑器,就按住alt+F11即可打开就可以自己写代码了,也可以在这里阅读已有的代码。 如果是宏,可以直接Alt+F8 选择执行即可打开运行。

三、excel vba的用途:

简单地说,就是模拟人工操作,完成一些挺繁琐的事情。比如:从网上复制到Word的文章,格式很乱,你就可以自己写一个宏,来自动完成整理工作,而不是人工一点一点地改,那样太累了。主要功能用途如下:

1 使重复的任务自动化

2 自定义EXCEL工具栏,菜单和界面

3 简化模板的使用

4 自定义EXCEL,使其成为开发平台

5 创建报表

6 对数据进行复杂的操作和分析

以下就是Visual Basic for Application的一些部分代码用途案例:

1、本示例为设置密码窗口 (1)

If ApplicationInputBox("请输入密码:") = 1234 Then [A1] = 1 '密码正确时执行

Else: MsgBox "密码错误,即将退出!" '此行与第2行共同设置密码 End If

2、本示例为设置密码窗口 (1)

X = MsgBox("是否真的要结帐", vbYesNo) If X = vbYes Then Close

3、本示例为设置工作表密码

ActiveSheetProtect Password:=641112 ' 保护工作表并设置密码

ActiveSheetUnprotect Password:=641112 '撤消工作表保护并取消密码 '

4、本示例关闭除正在运行本示例的工作簿以外的其他所有工作簿,并保存其更改内容 。

For Each w In Workbooks

If wName ThisWorkbookName Then wClose SaveChanges:=True End If Next w '每次打开工作簿时,

5、本示例都最大化 Microsoft Excel 窗口。 ApplicationWindowState = xlMaximized '

6、本示例显示活动工作表的名称。

MsgBox "The name of the active sheet is " & ActiveSheetName '

7、本示例保存当前活动工作簿的副本。

ActiveWorkbookSaveCopyAs "C:TEMPXXXXXLS"

总结:VBA究竟是什么更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案。

比如有个工作表,经常需要更新数据,打开数据源,调整格式,添加运算公式,等等相对固定重复的工作,就可以使用Marco宏。

某天当你工作的时候,点工具-宏-录制,然后从头到尾做一次,VBA会将你的所有动作写成一个宏程序。这个宏程序有基本的语言常识都可以弄懂,但是也会有许多无用的语句。至少,以后运行宏可以节约你的重复工作时间。其次进一步,学习条件、循环、变量等高阶用法。多学多问多实践就能学好的。

以上就是关于VB和VBA详细的区别都用在什么地方全部的内容,包括:VB和VBA详细的区别都用在什么地方、vba是什么 关于vba的简介、什么是vba等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:聚客百科

原文地址: https://juke.outofmemory.cn/life/3655746.html

()
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-24
下一篇 2023-04-24

发表评论

登录后才能评论

评论列表(0条)

保存