1.Excel VBA 工程代码密码保护及vbaproject.bin和MS-OVBA深入研究
2.什么是码分VBA VBA宏功能介绍
3.Vbaè¿ç¨å¤ªå¤§
4.VBAçåºå«
5.Excel中BASIC程序的运行情况如何呢?
6.vba是什么
Excel VBA 工程代码密码保护及vbaproject.bin和MS-OVBA深入研究
尽管网上存在VBA密码破解的源码和工具,但VBA加密的码分防护力度有限,对君子或许有效,码分但对于心存不轨者来说并不安全。码分一篇深入研究的码分文章解析了VBA代码在Excel文件中的存储位置,值得进一步了解。码分fpga保护源码
VBA项目,码分作为宏和编码的码分承载平台,其代码保护方法类似于Excel对工作表的码分密码保护。保护VBA项目可以通过常规步骤来实施。码分具体操作包括:首先,码分打开包含宏的码分保护工作簿。其次,码分VBAProject.bin是码分一个关键文件,它是码分二进制形式的VB项目,存储了所有代码模块,是Excel工作簿或文档中的核心组件,其默认名为"VBAProject.bin",但实际上用户可以更改名称。这个文件可以通过OLE文档容器查看,如VB 6.0的DocFile查看器或网络上的免费工具。
为了提取源代码,过去这是一项挑战,但现在有了MS-OVBA文档的支持,开发出了工具可以从VBAProject.bin中提取信息。这个文档详细描述了代码的存储结构,包括一个名为"Macros"或"_VBA_PROJECT_CUR"的根项目,其中包含至少3个元素。从VBAProject.bin中,你可以找到源代码存储的流,市场上有工具可以帮助你处理这些数据。
在遇到Excel文档损坏或Office安装问题导致无法访问VBA宏时,VBAProject.bin就显得尤为重要,它能帮助恢复丢失或隐藏的代码。要深入了解如何操作VBAProject.bin,可以参考MS-OVBA文档。持续关注我们的@小辣椒高效Office,获取更多有关VBA的深入内容更新。
什么是VBA VBA宏功能介绍
Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic Script。年发行的Excel 5.0版本中,即具备了VBA的宏功能。什么是Excel应用程序?利用Excel和VBA为平台,开发出来的电子数据表即称Excel应用程序。
什么是宏?宏是一系列的命令与函数,存储于 Visual Basic 的模块中,并在在需要执行该项任务时可随时运行。如果经常在重复某项任务,那么可以用宏自动执行该任务。
上面是VBA的三个概念,那为什么要用VBA?为什么要以Excel为平台来开发程序?
这里说几个简单的理由!
1、kindlePush源码当使用Excel为平台时,你的程序就可以利用Excel现有的功能,可以站在一个小巨人的肩膀上,这就可大大减少开发的周期。
2、几乎所有的电脑中都有Excel,也有大量的人正在使用Excel,但并不是每个人都会使用VBA,当你了解VBA后,以前的很多问题就可能在这就迎韧而解。
3、Excel开发程序分发很容易,只要电脑中有Excel,基本不需要在其它的文件,简简单单的复制与粘贴,就完成了文件的分发。
4、VBA的语言是相对容易学的语言,很容易上手,如果你熟悉VB,那你发现它们在语言方面是相通的,而如果你对Excel比较了解,那你也就很容易理解Excel的各种对象了。
最后,任何东西都不是万能的Excel与VBA也是一样。
如,Excel是一个电子表格程序,如果你把它强加成数据库软件是不公平的,在处理较少的数据,比如几千行的,用Excel是比较理想的,而大量的数据时,你就应该考虑用数据库了,比如Microsoft Office中的Access等,或者将两个相结合。
充分了解Excel的基本知识与VBA的编程技巧,你就会从中获得乐趣,让我们一起来吧,走进VBA的世界中。
VBA的用途
由于微软Office软件的普及,人们常见的办公软件Office软件中的Word、Excel、Access、Powerpoint都可以利用VBA使这些软件的应用更高效率,例如:通过一段VBA代码,可以实现画面的切换;可以实现复杂逻辑的统计(比如从多个表中,自动生成按合同号来跟踪生产量、入库量、销售量、库存量的统计清单)等。
掌握了VBA,可以发挥以下作用:
1.规范用户的操作,控制用户的jimstone源码操作行为;
2.操作界面人性化,方便用户的操作;
3.多个步骤的手工操作通过执行VBA代码可以迅速的实现;
4.实现一些VB无法实现的功能。
VBA和VB的区别包括如下几个方面:
1. VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(EXCEL等)自动化
2. VB具有自己的开发环境,而VBA必须寄生于已有的应用程序.
3. 要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE),而VBA开发的程序必须依赖于它的父应用程序,例如EXCEL.
4.VBA是VB的一个子集。
尽管存在这些不同,VBA和VB在结构上仍然十分相似.事实上,如果你已经了解了VB,会发现学习VBA非常快.相应的,学完VBA会给学习VB打下坚实的基础.而且,当学会在EXCEL中用VBA创建解决方案后,即已具备在WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA创建解决方案的大部分知识.
* VBA一个关键特征是你所学的知识在微软的一些产品中可以相互转化.
* VBA可以称作EXCEL的“遥控器”.
VBA究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案.
此外,如果你愿意,还可以将EXCEL用做开发平台实现应用程序.
Office取得巨大成功的一个重要原因就是VBA,使用VBA可以完成很多事情,基于Excel、Word的VBA小程序不计其数。
VBA程序员很多是业余程序员,正因为业余,解决的却是工作中需要解决的问题;所以,VBA程序大多都是只是在部门内部或个人使用的小工具。
集成了VBA的其他应用程序也很多,但真正能为程序增色的不多。
大多数人看到了VBA可以自动化一个程序,可以扩展已有程序,但没有看到在Office中,VBA代码可以是录制的,而不是写出来的,带来的好处是,学习曲线变得非常缓。如果没有宏录制功能,要熟悉某个Office组件的对象模型,绝非一日之功。
以ArcGIS为例,ArcGIS扩展必须使用ArcObject,不管是使用VBA也罢,VB也罢,还是C++也罢。但同时,ArcObject的学习不是一天两天可以搞定,对于业余程序员,要使用VBA来扩展ArcGIS,几乎没有可能;专业程序员又不屑使用VBA;而对于公司,如果要基于ArcObject来扩展ArcGIS,选择VBA意味着源码的保护很困难。所以,ArcGIS的VBA就如同鸡肋。
不过,学习AO的时候,使用VBA比使用其他语言要容易一些,写几行代码,然后直接运行测试结果,这种交互式的学习应该是最好的学习方法。
ArcGIS以及AO与Office相比,还有一个很大的差别,就是ArcGIS缺乏中等粒度的对象,例如Word和Excel的Range对象。对于Office开发,可以在对底层小粒度对象一无所知的状况下做很多事情,这就是抽象的力量。常人可以处理的复杂度是有限的,面对数十个对象和几百个对象,后者需要付出的努力不是倍,而是inkCanvas源码数十倍或更多,因为在学习过程中,必须可以把这些对象在大脑中很好的组织,以控制其复杂度。
Visual Basic for Applications(简称VBA)是新一代标准宏语言,是基于Visual Basic for Windows 发展而来的。它与传统的宏语言不同,传统的宏语言不具有高级语言的特征,没有面向对象的程序设计概念和方法。而VBA 提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。VBA 易于学习掌握,可以使用宏记录器记录用户的各种操作并将其转换为VBA 程序代码。这样用户可以容易地将日常工作转换为VBA 程序代码,使工作自动化。因此,对于在工作中需要经常使用Office 套装软件的用户,学用VBA 有助于使工作自动化,提高工作效率。另外,由于VBA 可以直接应用Office 套装软件的各项强大功能,所以对于程序设计人员的程序设计和开发更加方便快捷。
VBA 基础
Visual Basic 的应用程序版(VBA)是Microsoft 公司长期追求的目标,使可编程应用软件得到完美的实现,它作为一种通用的宏语言可被所有的Microsoft 可编程应用软件所共享。在没有VBA 以前,一些应用软件如Excel、Word、Access、Project 等都采用自己的宏语言供用户开发使用,但每种宏语言都是独立的,需要用户专门去学习,它们之间互不兼容,使得应用软件之间不能在程序上互联。拥有一种可跨越多个应用软件,使各应用软件产品具有高效、灵活且一致性的开发工具是至关重要的。VBA 作为一种新一代的标准宏语言,具有上述跨越多种应用软件并且具有控制应用软件对象的能力,使得程序设计人员仅需学习一种统一的标准宏语言,就可以转换到特定的应用软件上去,程序设计人员在编程和调试代码时所看到的是相同的用户界面,而且VBA 与原应用软件的宏语言相兼容,以保障用户在代码和工作上的投资。有了VBA 以后,多种应用程序共用一种宏语言,节省了程序人员的学习时间,提高了不同应用软件间的相互开发和调用能力。
在Office 中,宏语言VBA 适用于所有应用程序,包括Word 、 Excel、PowerPoint、Access、CyConsole源码Outlook 以及Project。在Office 的各应用程序中,新增了Visual Basic 编辑器。这样,用户无论是在Excel 中,还是在Word 中以至是在Access 中建立和管理VBA 都具有统一的方法和标准。
在介绍如何利用VBA 提高工作效率之前,首先介绍一些与VBA 有关的基础知识。
VB 与VBA
VBA 是基于Visual Basic 发展而来的,它们具有相似的语言结构。Visual Basic 是Microsoft 的主要图形界面开发工具,VBA 5.0 (亦即VBA )则是Visual Basic 5.0 的子集。Visual Basic 是由Basic 发展而来的第四代语言。Visual Basic 作为一套独立的 Windows 系统开发工具,可用于开发Windows 环境下的各类应用程序,是一种可视化的、面向对象的、采用事件驱动方式的结构化高级程序设计语言。它具有高效率、简单易学及功能强大的特点。VB 的程序语言简单、便捷,利用其事件驱动的编程机制,新颖易用的可视化设计工具,并使用Windows 应用程序接口(API)函数,采用动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)以及开放式数据库访问(ODBC)等技术,可以高效、快速地编制出 Windows 环境下功能强大、图形界面丰富的应用软件系统。
Visual Basic 程序很大一部分以可视(Visual)形式实现,这意味着在设计阶段就可以看到程序运行的屏幕画面,用户可以在设计时能够方便地改动画面图像、大小、颜色等,直到满意为止。VB 的用户可以是缺乏Windows 及C 语言开发经验的专业软件人员,也可以是具有一定Windows 开发经验的专业人员,VB 的可视化编程方法使得原来繁琐枯燥、令人生畏的Windows 应用程序设计变得轻松自如、妙趣横生。以往的Windows 应用程序开发工具在设计图形用户界面时,都是采用编程的方法,并伴随大量的计算任务,一个大型应用程序约有%的程序代码用来处理用户界面,而且在程序设计过程中不能看到界面显示的效果,只有在程序执行时才能观察到,如果界面效果不佳,还需要回到程序中去修改。Visual Basic 提供了新颖的可视化设计工具,巧妙地将Windows 界面设计的复杂性封装起来,程序开发人员不必再为界面设计而编写大量程序代码,仅需采用现有工具按设计者要求的布局,在屏幕上画出所需界面,并为各图形对象设置属性即可,VB 自动产生界面设计代码,这样便将事先编制好的控件可视地连接到一起,构成一个随时可调整的界面。
VBA 不但继承了VB 的开发机制,而且VBA 还具有与VB 相似的语言结构,它们的集成开发环境IDE(Intergrated Development Environment)也几乎相同。但是,经过优化,VBA 专门用于Office 的各应用程序。VB 可运行直接来自Windows 或NT 桌面上的应用程序,而VBA 的项目(Project)仅由使用VBA 的Excel、Word、 PowerPoint 等称为宿主(Host)的Office 应用程序(Application)来调用。
WordBasic 和 Visual Basic
在 Word 中,为完成具体的任务,所用的是WordBasic 命令。 WordBasic 是从VBA 扩展而来的一种专用于处理Word 自动功能的语言,下面介绍它们在概念上的区别和它们的宏的相互转换。WordBasic 和 Visual Basic 在概念上的区别
VBA 和WordBasic 之间主要的区别是 WordBasic 语言包含由大约 个命令组成的一张平面列表,而 Visual Basic 则包含了由对象组成的一个分层结构,每个对象都可提供一组特定方法和属性(与 WordBasic 中的语句和函数相似)。大多数 WordBasic 命令在任何时候都可运行,而 Visual Basic 只在特定的时候提供有效对象的方法和属性。
注意:本书提到的Visual Basic 如果不加特别说明,都是指Visual Basic For Applications。
对象是 Visual Basic 这一宏伟大厦的基石,在 Visual Basic 中进行的几乎任何操作都与修改对象有关。Word 的任何元素(如文档、段落、域、书签等),都可以用 Visual Basic 中的对象来代表。与平面列表中的命令不同,部分对象只能通过其他对象才能加以访问。例如,可以通过不同的对象(如 Style、Selection 和 Find 对象)来访问 Font 对象。
应用加粗格式的编程任务就表明了两种编程语言之间的区别。下面的 WordBasic 指令对所选内容应用加粗格式。
下面的示例是 Visual Basic 语句,也是对所选内容应用加粗格式。
Selection.Font.Bold = True
Visual Basic 不包含 Bold 语句和函数,却有一个名为 Bold 的属性(属性通常指一个对象的特性,例如大小、颜色,或者是否是加粗)。Bold 是 Font 对象的一个属性。同样地,Font 是返回一个 Font 对象的 Selection 对象的一个属性。按照下面的对象结构,可以生成指令,以将加粗格式应用于所选内容。
Bold 属性是一个 Boolean 类型、可读写的属性。这意味着可以将 Bold 属性设置为 True 或 False(真或假),也可返回当前值。下面 WordBasic 指令的返回值表明是否将加粗格式应用于所选内容。
x = Bold()
下面的示例是 Visual Basic 语句,返回所选内容的加粗格式的状态。
x = Selection.Font.Bold
要在 Visual Basic 中执行一个任务,就需要确定合适的对象。例如,如果用户想应用字体对话框中的字符格式,可使用 Font 对象。然后需要确定如何理顺从 Application 对象到 Font 对象的 Word 对象结构,以找到包含需要修改的 Font 对象的对象。在确定了该对象的路径之后(例如,Selection.Font),可使用 Visual Basic 编辑器中的对象浏览器、帮助或自动列表成员之类的功能来确定可将什么属性和方法应用于该对象。
将 WordBasic 宏转换为 Visual Basic
宏可使任务自动化,如果在 Word 中重复进行某项工作,可用宏使其自动执行。宏是将一系列的 Word 命令和指令组合在一起,形成一个命令,以实现任务执行的自动化。用户可创建并执行一个宏,以替代人工进行一系列费时而重复的 Word 操作。事实上,它是一个自定义命令,用来完成所需任务。
宏的一些典型应用如:加速日常编辑和格式设置、组合多个命令、使对话框中的选项更易于访问、使一系列复杂的任务自动执行等。
Word 提供了两种创建宏的方法:宏录制器和 Visual Basic 编辑器。宏录制器可帮助用户开始创建宏。Word 在 VBA 编程语言中把宏录制为一系列的 Word 命令。可在 Visual Basic 编辑器中打开已录制的宏,修改其中的指令。也可用 Visual Basic 编辑器创建包括 Visual Basic 指令的非常灵活和强有力的宏,这些指令无法采用录制的方式。
当第一次进行下列任何操作时,Word 将自动转换 Word 6.x 或 Word 模板中的宏。
Vbaè¿ç¨å¤ªå¤§
è¦æç¨åºç»æå,å°±æ¯å¤åfunction,ä¸è¦ä¸ä¸ªsubå°åº.å½æ°åä½ çç¨åº,æå©äºä»£ç éå¤å©ç¨åç»´æ¤.
ä½ å¯ä»¥å°è¯ç¨ on error resume nextæ¥è¯è¯ç.
ä¸ä¸ªå¾é¿çsubå½ç¶å¯ä»¥åå¼å.æ³å¨ä¸ä¸ªsubéé¢è°ç¨å ¶ä»subæè å½æ°,å¯ä»¥ç´æ¥ç¨call.
ä¾å¦
Function hi()
msgbox("hi")
end function
sub hello()
msg("hello")
end sub
sub test()
call hello
call hi
end sub
è¿æ ·å°±å¯ä»¥å¨testéé¢è°ç¨å½æ°hi()åsub hello()äº
VBAçåºå«
1. VBæ¯è®¾è®¡ç¨äºå建æ åçåºç¨ç¨åº,èVBAæ¯ä½¿å·²æçåºç¨ç¨åº(EXCELç)èªå¨å2. VBå ·æèªå·±çå¼åç¯å¢,èVBAå¿ é¡»å¯çäºå·²æçåºç¨ç¨åº.
3. è¦è¿è¡VBå¼åçåºç¨ç¨åº,ç¨æ·ä¸å¿ å®è£ VB,å 为VBå¼ååºçåºç¨ç¨åºæ¯å¯æ§è¡æ件(*.EXE),èVBAå¼åçç¨åºå¿ é¡»ä¾èµäºå®çç¶åºç¨ç¨åº,ä¾å¦EXCEL.
4.VBAæ¯VBçä¸ä¸ªåéã
尽管åå¨è¿äºä¸å,VBAåVBå¨ç»æä¸ä»ç¶ååç¸ä¼¼.äºå®ä¸,å¦æä½ å·²ç»äºè§£äºVB,ä¼åç°å¦ä¹ VBAé常快.ç¸åºç,å¦å®VBAä¼ç»å¦ä¹ VBæä¸åå®çåºç¡.èä¸,å½å¦ä¼å¨EXCELä¸ç¨VBAå建解å³æ¹æ¡å,å³å·²å ·å¤å¨WORD ACCESS OUTLOOK FOXPRO POWERPOINT ä¸ç¨VBAå建解å³æ¹æ¡ç大é¨åç¥è¯.
* VBAä¸ä¸ªå ³é®ç¹å¾æ¯ä½ æå¦çç¥è¯å¨å¾®è½¯çä¸äºäº§åä¸å¯ä»¥ç¸äºè½¬å.
* VBAå¯ä»¥ç§°ä½EXCELçâé¥æ§å¨â.
VBA究ç«æ¯ä»ä¹?æ´ç¡®åå°è®²,å®æ¯ä¸ç§èªå¨åè¯è¨,å®å¯ä»¥ä½¿å¸¸ç¨çç¨åºèªå¨å,å¯ä»¥å建èªå®ä¹ç解å³æ¹æ¡.
æ¤å¤,å¦æä½ æ¿æ,è¿å¯ä»¥å°EXCELç¨åå¼åå¹³å°å®ç°åºç¨ç¨åº.
Officeåå¾å·¨å¤§æåçä¸ä¸ªéè¦åå å°±æ¯VBAï¼ä½¿ç¨VBAå¯ä»¥å®æå¾å¤äºæ ï¼åºäºExcelãWordçVBAå°ç¨åºä¸è®¡å ¶æ°ã
VBAç¨åºåå¾å¤æ¯ä¸ä½ç¨åºåï¼æ£å 为ä¸ä½ï¼è§£å³çå´æ¯å·¥ä½ä¸éè¦è§£å³çé®é¢ï¼æ以ï¼VBAç¨åºå¤§å¤é½æ¯åªæ¯å¨é¨é¨å é¨æ个人使ç¨çå°å·¥å ·ã
éæäºVBAçå ¶ä»åºç¨ç¨åºä¹å¾å¤ï¼ä½çæ£è½ä¸ºç¨åºå¢è²çä¸å¤ã
大å¤æ°äººçå°äºVBAå¯ä»¥èªå¨åä¸ä¸ªç¨åºï¼å¯ä»¥æ©å±å·²æç¨åºï¼ä½æ²¡æçå°å¨Officeä¸ï¼VBA代ç å¯ä»¥æ¯å½å¶çï¼èä¸æ¯ååºæ¥çï¼å¸¦æ¥ç好å¤æ¯ï¼å¦ä¹ æ²çº¿åå¾é常ç¼ãå¦æ没æå®å½å¶åè½ï¼è¦çææ个Officeç»ä»¶ç对象模åï¼ç»éä¸æ¥ä¹åã
以ArcGIS为ä¾ï¼ArcGISæ©å±å¿ 须使ç¨ArcObjectï¼ä¸ç®¡æ¯ä½¿ç¨VBAä¹ç½¢ï¼VBä¹ç½¢ï¼è¿æ¯C++ä¹ç½¢ãä½åæ¶ï¼ArcObjectçå¦ä¹ ä¸æ¯ä¸å¤©ä¸¤å¤©å¯ä»¥æå®ï¼å¯¹äºä¸ä½ç¨åºåï¼è¦ä½¿ç¨VBAæ¥æ©å±ArcGISï¼å ä¹æ²¡æå¯è½ï¼ä¸ä¸ç¨åºååä¸å±ä½¿ç¨VBAï¼è对äºå ¬å¸ï¼å¦æè¦åºäºArcObjectæ¥æ©å±ArcGISï¼éæ©VBAæå³çæºç çä¿æ¤å¾å°é¾ãæ以ï¼ArcGISçVBAå°±å¦å鸡èã
ä¸è¿ï¼å¦ä¹ AOçæ¶åï¼ä½¿ç¨VBAæ¯ä½¿ç¨å ¶ä»è¯è¨è¦å®¹æä¸äºï¼åå è¡ä»£ç ï¼ç¶åç´æ¥è¿è¡æµè¯ç»æï¼è¿ç§äº¤äºå¼çå¦ä¹ åºè¯¥æ¯æ好çå¦ä¹ æ¹æ³ã
ArcGIS以åAOä¸Officeç¸æ¯ï¼è¿æä¸ä¸ªå¾å¤§çå·®å«ï¼å°±æ¯ArcGIS缺ä¹ä¸çç²åº¦ç对象ï¼ä¾å¦WordåExcelçRange对象ã对äºOfficeå¼åï¼å¯ä»¥å¨å¯¹åºå±å°ç²åº¦å¯¹è±¡ä¸æ æç¥çç¶åµä¸åå¾å¤äºæ ï¼è¿å°±æ¯æ½è±¡çåéã常人å¯ä»¥å¤ççå¤æ度æ¯æéçï¼é¢å¯¹æ°å个对象åå ç¾ä¸ªå¯¹è±¡ï¼åè éè¦ä»åºçåªåä¸æ¯åï¼èæ¯æ°ååææ´å¤ï¼å 为å¨å¦ä¹ è¿ç¨ä¸ï¼å¿ é¡»å¯ä»¥æè¿äºå¯¹è±¡å¨å¤§èä¸å¾å¥½çç»ç»ï¼ä»¥æ§å¶å ¶å¤æ度ã
Visual Basic for Applicationsï¼ç®ç§°VBAï¼æ¯æ°ä¸ä»£æ åå®è¯è¨ï¼æ¯åºäºVisual Basic for Windows åå±èæ¥çãå®ä¸ä¼ ç»çå®è¯è¨ä¸åï¼ä¼ ç»çå®è¯è¨ä¸å ·æé«çº§è¯è¨çç¹å¾ï¼æ²¡æé¢å对象çç¨åºè®¾è®¡æ¦å¿µåæ¹æ³ãèVBA æä¾äºé¢å对象çç¨åºè®¾è®¡æ¹æ³ï¼æä¾äºç¸å½å®æ´çç¨åºè®¾è®¡è¯è¨ãVBA æäºå¦ä¹ ææ¡ï¼å¯ä»¥ä½¿ç¨å®è®°å½å¨è®°å½ç¨æ·çåç§æä½å¹¶å°å ¶è½¬æ¢ä¸ºVBA ç¨åºä»£ç ãè¿æ ·ç¨æ·å¯ä»¥å®¹æå°å°æ¥å¸¸å·¥ä½è½¬æ¢ä¸ºVBA ç¨åºä»£ç ï¼ä½¿å·¥ä½èªå¨åãå æ¤ï¼å¯¹äºå¨å·¥ä½ä¸éè¦ç»å¸¸ä½¿ç¨Office å¥è£ 软件çç¨æ·ï¼å¦ç¨VBA æå©äºä½¿å·¥ä½èªå¨åï¼æé«å·¥ä½æçãå¦å¤ï¼ç±äºVBA å¯ä»¥ç´æ¥åºç¨Office å¥è£ 软件çå项强大åè½ï¼æ以对äºç¨åºè®¾è®¡äººåçç¨åºè®¾è®¡åå¼åæ´å æ¹ä¾¿å¿«æ·ã
Excel中BASIC程序的运行情况如何呢?
在微软的电子表格软件Excel中,Visual Basic for Applications(VBA)提供了一个功能强大的编程环境。VBA实际上就是微软从Visual Basic中删去表格设计器(Forms Designer)后的产物,并且能够访问Excel的所有命令和对象,如单元格、工作表等。因此,VBA可以全面控制Excel的全部功能,而这种编程语言是基于BASIC语言的宏语言,兼容了BASIC语言的命令和语法。在Excel和VBA出现之前,许多计算机用户使用BASIC语言编写的应用程序。然而,随着操作系统升级至Windows以及办公软件转变为Office,BASIC程序在Windows界面下的使用变得相对不便。所幸的是,BASIC与VBA均出自微软公司,这使得我们能够轻松地将过去的BASIC程序转换为Excel中的VBA程序。转换后的程序利用Excel的界面进行数据输入和输出,既直观又方便,具有BASIC程序不可比拟的优势。
在Excel中,一段程序称为“宏”,而记录程序的界面称为“模块表”。将BASIC源程序输入Excel的步骤如下:首先,需要打开模块表。在Office 中,模块表的调用与Office 有所不同。以Office 的Excel为例,通过选择“插入”->“宏表”->“模块表”即可出现空白的模块表。接下来,在模块表中输入程序,最简单的方法是直接使用键盘输入源代码。如果源代码能够在Office中的Word或Windows中的写字板等程序中读取,可以利用“复制”和“粘贴”功能将源代码粘贴到模块表中。然而,在许多情况下,Word读出的BASIC源代码可能是一些不可识别的字符,无法直接复制。这时,可以使用一种替代方法:在Windows下选择“MS-DOS模式”,打开一个DOS窗口,在此窗口中运行BASIC编程语言(如GW-BASIC)。加载想要转换的源程序,并使用BASIC中的LIST命令在窗口中显示源代码。然后,使用鼠标操作在工具栏中点击“标记”键,将光标移动到窗口右下角,使用方向键和SHIFT键将整个窗口中的代码复制到模块表中。不断重复这一过程,即可将整个源程序复制到Excel中。
将源程序输入到模块表后,可以对其进行编辑。由于VBA是兼容BASIC编程语言的宏语言,大部分BASIC程序行无需修改即可直接运行。需要修改的方面主要包括:给程序(宏)命名、注意变量与数组的命名不冲突、以及输入语句的调整。具体而言,程序的开头需要加上Sub宏名()语句,结尾加上End Sub语句。此外,在BASIC中允许存在同名的变量与数组,在VBA中则必须将其中之一改名,如将其中一个改为A1或AA。在输入语句方面,BASIC中的INPUT或READ语句用于数据输入,在VBA中,可以将所需输入的数据放置在Excel工作表指定的单元格中,然后使用对象存储的CELLS方法读取这些数据。例如,BASIC中的 READ A,B DATA ,表示将数值和分别赋予变量A和B;而在VBA中,可以使用A = Worksheets("Sheet1")。Cells(1,1) B = Worksheets("Sheet1")。Cells(1,2)将EXCEL工作表Sheet1中第一行第一列单元格(A1单元)的值赋给变量A;第一行第二列单元格(B1单元)的值赋给变量B。只要在运行程序前将数值和分别放置在A1和B1单元格中,其效果与BASIC中的READ语句相同。
在程序运行过程中,有时需要在特定操作后暂停,根据前一段的运行情况输入额外数据。在BASIC中,这种情况通常使用INPUT语句;而在VBA中,可以通过在输入数据之前设置STOP语句来实现,然后在指定的单元格中填入所需数据,让程序继续运行(在Excel菜单中选择“继续运行”即可)。此外,也可以使用InputBox( )函数创建对话框进行输入。例如,使用以下语句创建对话框:X1 = "请输入金额" X2 = "输入对话框" X = InputBox(X1, X2)。当程序执行到这一行时,屏幕上会弹出一个对话框,提示用户输入金额。点击确定后,变量X的值将等于用户输入的文本。程序继续运行。值得注意的是,如果计划输入数字,则必须使用Val()函数将其转换,即在上述语句后添加X = Val(X)的语句,以确保输入值被正确处理。
vba是什么
VBA是一种专为应用程序自动化设计的编程语言,它起源于年代早期,旨在简化对各种软件的自定义操作。VBA可以看作是标准的Visual Basic的一个子集,但与VB有所不同:VB主要用于创建独立的应用程序,而VBA则专注于在现有应用程序(如Excel)中实现自动化。VB有自己的开发环境,VBA则需要依托于预装的办公软件运行。学习VBA对于已熟悉VB的用户来说,上手很快,因为它在结构上与VB相似,且VBA知识在微软产品间具有通用性,如Excel中的VBA就像一个“遥控器”。
VBA在Office套件中扮演着关键角色,使得用户能通过宏录制功能轻松创建自定义解决方案,而无需从零开始编写代码。例如,Excel中的VBA代码能够极大地扩展其功能,使得许多日常任务自动化。然而,对于非专业的ArcGIS扩展开发者,如业余程序员,VBA可能不是一个理想选择,因为它需要深入学习ArcObject,且源代码保护困难。相比之下,学习ArcGIS的AO时,使用VBA可能更易于入门,通过交互式学习方式快速掌握。
总的来说,VBA是一种强大且易于上手的编程语言,尤其适合那些需要频繁使用Office软件并追求工作效率提升的用户。它能够将复杂的任务自动化,让办公工作更加高效,同时提供了对Office功能的直接访问,方便程序员的开发工作。
VBA的问题,求助
我曾经遇到过类似的问题。如果我的猜测没有错的话,这是由于写 VBA 代码的人使用的是 繁体中文 操作系统,它在编辑 VBA 代码时使用了 Big5 码 或 CJK 码。所以,当你使用 简体中文 操作系统时,对于 VBA 来说就显示成乱码,无法正确执行。
对于开发者来说,应该极力避免出现这种情况,尽量不要在 VBA 代码中使用非英文的字符。参见下图。我们使用者看到某个工作表的名称是 Name 属性对应的字符,截图中红笔圈出来的显示是 “测试"。但在编辑 VBA 代码应该尽量使用 CodeName 属性对应的字符,截图中用荧光笔画出来的是 "Sheet1"。
使用 CodeName 的好处不仅仅是能够被不同语言版本的 Excel 所识别,还有一个好处:无论你怎么修改该 工作表的名称,或调整该工作表的位置,都不会引起问题。因为 CodeName 属性是固定不变的。除非你去手动调整。