VBA开发

2024-07-14

VBA开发(精选九篇)

VBA开发 篇1

在AutoCAD 2010版本之前,用户在制图过程中,可根据自身对功能的需求,借用VBA、AutoLISP、Ads等作为二次开发的工具对AutoCAD进行功能定制和二次开发,二次开发能够提高工作的效率和减轻工作量,其开放式结构能满足不同专业的需要,来实现设计中的应用,达到改进和加强AutoCAD功能的目的。在AutoCAD软件中,应用VBA技术如何实现开发小型程序展开描述。

1 应用VBA技术进行AutoCAD二次开发

VBA(Visual Basic for Application)是由Microsoft创建的,用来自动执行任务的一个编程环境,是一种面向用户的应用软件编程语言,可提供类似VB(Visual Basic 6)的丰富开发功能,利用面向对象(OOP)的ActiveX Automation技术,可以使用任何Automation技术的应用程序共同工作。

基于AutoCAD的VBA应用程序,运用AutoCAD的绘图功能与高级程序语言的计算功能,使用VB程序语句在AutoCAD上,用VBA技术进行二次开发,能够较好地控制对AutoCAD图形的操作。

1.1 在AutoCAD绘图环境中绘制二维线段

若在AutoCAD环境中,创建两条连续的线段,实现它的方法简单描述如下:命令行输入Line,按操作提示输入相应的参数绘制线段。详细操作步骤如下,1)LINE指定第一点;2)指定下一点或[放弃(U)];3)指定下一点或[放弃(U)];4)指定下一点或[闭合(C)/放弃(U)]:)。

1.2 应用VBA技术实现对话框式绘制二维线段

1.2.1 进入基于AutoCAD的VBA环境

在AutoCAD环境中,先进入VBA集成开发环境(VBA IDE)。

第一步:选择菜单“工具”→“宏”→打开“VBA管理器”。

第二步:“新建”一个工程,工程列表框中出现一个名称为“ACADProject”的工程,选择该工程,“另存为”在适当的位置。

第三步:在“VBA管理器”对话框,单击“Visual Basic Editor”,进入VBA集成开发环境。

第四步:选择“插入”→“用户窗体”,添加一个新的窗体作为对话框,在窗体上设置各种控件。

1.2.2 设计对话框界面布局

需要创建的对话框界面,包含三个命令按钮控件(执行相关的绘图),六个文本框控件(用于输入数值),六个标签控件(用于提示用户输入信息)。

在VBA IDE中设计:对话框界面,并对控件进行排列,并调整控件布局效果如图1所示。

1.2.3 对话框界面控件与属性设置

在VBA IDE中设计:对话框界面控件与属性设置,如表1所示。

1.2.4 对话框功能实现代码

通过双击每一个命令按钮,进入相应的VBA代码窗口,设置三个命令按钮相关的代码。

1)“绘制一条线段”功能实现代码段如下:

2)“绘制下一条线段”功能实现代码段如下:

'思想:第二个坐标点不变,单击该命令按钮,输入下一条直线的坐标,绘制下一条直线。

3)“退出”功能实现代码段如下:

2.2.5 运行VBA IDE中已编制好的程序

在VBA集成开发环境(VBA IDE),选择“运行”→“运行宏”,即可在AutoCAD环境下,出现输入参数对话框,其效果如图2所示。

并绘制出代码所要求的图形,图形效果如图3所示。

3 结论

AutoCAD绘图软件是目前通用的、交互式的计算机辅助绘图与设计软件包。其通用性使得它在设计与制造的各个领域:如服装、汽车、机械、机械、飞机、电子、航空、集成电路、轮船、建筑等领域中得到了极为广泛的应用。

在AutoCAD绘图环境中,依托其强大图形功能,以Visual Basic(简称VB)可视化的、面向对象的、采用事件驱动方式的、结构化高级程序设计语言编程为基础,应用VBA技术对AutoCAD进行二次开发,编制好实现图形的程序,构建成简洁的人机对话界面,用户只需在对话框内输入参数,便可以得到图形,根据参数的不同、程序不同得到不同的效果图。

摘要:在AutoCAD制图应用过程中,需要开发一些符合用户需求的AutoCAD工具。VBA是一种对AutoCAD进行二次开发的灵活手段。应用VBA技术控制在AutoCAD环境中绘图,探讨它在AutoCAD二次开发中,VBA程序语句设计的基本步骤、具体实现过程,达到绘制所需要AutoCAD图形的目的。

关键词:VBA,AutoCAD,二次开发

参考文献

[1]戎马工作室.Autocad 2007建筑绘图完全新手学习手册[M].北京:机械工业出版社,2007.

[2]王若慧.基于VBA的AutoCAD二次开发及应用实例[J].自动化技术与应用,2007,26(9).

[3]佟士懋,邢芳芳,夏齐霄.AutoCAD ActiveX/VBA二次开发技术基础及应用实例[M].北京:国防工业出版社,2006.

[4]张帆,郑立楷,卢择临,王成煌.AutoCAD VBA二次开发教程[M].北京:清华大学出版社,2006.

VBA开发 篇2

基于VBA开发的电磁波观测资料管理软件

本地震前兆电磁波观测数据处理软件(DCB软件)是一个基于Excel数据平台,用VBA编写的管理软件.本软件具有数据自动录入、数据库管理、绘图和打印等功能.以Excel作为数据处理平台的DCB软件具有以下优点:操作简单、数据直观、制作图表方便、便于数据管理、分析统计、传递交流,等等.VBA程序则具有容易学习、理解,方便修改等优点.

作 者:廖华康 陈淑贞 Liao Huakang Chen Shuzhen 作者单位:中国广东,528000,佛山市地震局刊 名:地震地磁观测与研究 ISTIC英文刊名:SEISMOLOGICAL AND GEOMAGNETIC OBSERVATION AND RESEARCH年,卷(期):29(1)分类号:P315.69关键词:VBA 电磁波 数据库

VBA开发 篇3

近年来, 我国职业教育迅猛发展, 职业学校的办学规模和办学模式都发生了巨大的变化, 教师数量不断增加, 请假事件发生的概率增大, 从而代课数量逐步上升。仅靠传统手工安排代课已经不适应信息化需求, 智能化代课软件的开发势在必行。智能化代课系统能在代课排课中实现共享功能, 能让学校各科室、各部门和教研组都能享受此系统带来的便利。有着传统代课安排无法比拟的优点。例如:检索迅速、查找方便、可靠性高、保密性好、成本低等。这些优点极大地提高了教务管理的效率, 也是学校的科学化、现代化管理必要条件。

2 系统开发思路

根据用户使用习惯, 以稳定性、实用性、安全性为总体原则。开发过程中, 首先要明确用户的需求, 对系统进行全面分析, 采用软件工程的方法对系统进行设计, 边开发边验证, 把各模块进行集成, 最后对整个系统进行测试, 完成软件的开发, 从而实现预期效果。

3 系统概要设计

登录该系统的用户分为两大类:教务管理员和教师。管理员登录后可以输入需要代课的基本数据进行查询可代课教师信息, 根据查询结果进行自动安排代课, 同时自动统计代课与被代课信息和管理用户。教师登录后, 可查询需要代课的相关信息。

本系统用ACCESS 2010数据管理系统作为开发平台和开发工具。将正信华数据库 (排课软件) 中的课程总表生成各班的流水数据, 实现ACCESS与EXCEL共享数据完成代课查询登记系统的开发。该系统的开发改变了传统的手工安排代课的形式, 简化教务工作中手工查询课表、安排代课的劳动, 实现代课查询与安排自动化、数字化和信息化。

4 系统功能分析

代课查询登记系统主要包括:用户登陆、查询、代课安排和用户管理, 整个系统功能结构见图1。

其中各个模块的功能分析如下。用户登陆:主要是通过检验用户名和密码来实现。在本系统中, 只有两种身份用户:教师、管理员。查询:根据需代课信息可以快速查询到可以代课教师的信息、也可以查询到教师需要代课信息和已完成的代课记录。代课安排:根据查询结果进行自动安排代课, 同时自动统计代课与被代课信息。用户管理:管理员用户可以对教师用户进行创建和维护。

5 系统设计主要实现技术

5.1 数据库设计

本系统是一个登记学校代课查询系统, 所要处理的数据主要包括代课基本数据、教师电话号码、代课数据和临时数据。所建立的主要数据库表及其结构设计如表1~表4所示。

5.2 VBA技术的运用和系统的实现

本系统采用VBA语言开发。在Microsoft Visual Basic编辑器中, 可以使用ADO对象以及ADO的附加组件来创建或修改表和查询、检验数据库、或者访问外部数据源。还可在代码中使用ADO来操作数据库中的数据。根据系统主要功能, 这里给出“用户登陆”和“代课安排”部分子程序代码和实现界面。

用户登陆主要代码和操作界面 (见图2) 。

代课安排部分子程序代码和操作界面 (如图3所示) 。

6 结语

该论文来自基于VBA的代课查询登记系统的开发研究的校级课题。该课题在2014年12月由笔者主持完成开发此系统, 于2015年1月交付给学校试用。该代课查询登记系统的应用, 解决了学校手工查询安排代课的问题, 提高了教务办工效率, 为学校数字化校园建设提供了一个参考的、可操作的方向。并且本系统可作为其它职业学校软件开发设计参考用, 也可为同类学校代课系统开发提供借鉴。

摘要:针对目前排课软件不能实现代课查询功能, 为了弥补这项不足, 笔者基于VBA开发出代课查询登记系统。笔者将详细介绍系统开发背景、开发思路、概要设计、系统功能分析、系统实现技术。该系统的开发主要改变传统的手工安排代课的形式, 简化教务工作中手工查询课表、安排代课的劳动, 实现代课查询与安排自动化、数字化和信息化。

关键词:代课查询,开发,系统,ACCESS,VBA

参考文献

[1]蒋银珍.基于ASP的网上考试系统的开发[J].计算机教育, 2008 (2) .

[2]刘红梅.基于VBA的Word操作题自动阅卷方法的研究与实现[J].计算机教育, 2007 (24) .

vba心得体会 篇4

Excel 要保存成 .xlsm 格式

2. 应用 VBA 的原因:

满是公式的 Excel 表格不注意删除一两个公式就会毁掉整个心血。

不想把自己辛辛苦苦整理好的 EXCEL 带着公式一起发给别人,做了好久的公式,就这样被别人轻松拿到。用了 VBA ,点击 F5 运行完公式,文件另存为 .xlsx 格式再发给别人,他得到的就只是一堆数据而已。没有任何加工痕迹,你的思路也不会被窃取。

节约时间。我虽然不是财务部门的,但是每个月也是处理很多相同的数据。或者是把很多相同模板的数据归集到一个总表。虽然可以一个个的复制,但是太浪费时间了。所以我就写了一个代码,把收到的所有 EXCEL 放到一个文件夹,再创建一个总表,运行代码,将所有 excel 复制到总表中。我的 excel 有 20 几个,平均每个 1MB 。不到 30 秒就汇总进总表中,而且每个 sheet 的名字也编好了。

总而言之,你觉得想学点什么打发时间 + 每个月还是有些数据需要归集 + 不想把自己辛辛苦苦写了好久的公式和 EXCEL 一起发给别人。学习VBA 还是一个不错的选择。

3. VBA 规则

Alt F11 打开 VBA 编辑器

立即窗口,本地窗口,工具条都可以在工具栏找到。立即窗口可以按住鼠标左键拖出来使用,也可以双击左键镶嵌到 VBA 编辑器中。

F8 调试,就是一行一行的过。如果你写了好几个模块,调试的时候总是跳到其他模块,点一下“工具栏第二行的小方块”,就在一把三角板的左面。这个小方块也是从头调试的意思。

F5 运行

4. VBA 编写

--- 开头第一句:

Sub 代码名称

Private sub worksheet_change() 这种 worksheet 的只能编辑到 sheet 里。不能写在模块里。双击 sheet1 ,直接在里面写,就可以运行。

--- 对变量进行定义:

Integer, string, range, worksheet, workbook

--- 单元格表示方法: cells, range , []

A1 单元格表示方法:

[a1] / [A1]

Cells(1,1)

Cells(1, “ A ” )/cells(1, ” a ” )

Range( “ a1 ” ) / range( “ A1 ” )

A1~B5 区域表示方法:

[A1:B5] /[a1:b5]

Range( “ a1:b5 ” ) /range( “ a1 ” , ” b5 ” ) / range ( “ a1:b ” & 5)

--- 工作表 & 工作簿表示方法:

Sheet1 : VBA 项目栏对应的 Sheet1

Sheets(1)/ worksheets(1): excel 中第一个 sheet

Sheets( “工作表名字” )

Workbook1/ workbooks(1) /workbooks( “ 1.xlsx ” ) 此处千万不要忘记 .xlsx !!!

--- 常用逻辑

If … /else(else if ) … /end if

循环 for … to … /next

循环 for each … /next

循环 do until loop

循环 do while loop

--- 常用跳过错误语句

Application.displayalerts=false (false 语句基本在第二行代码就用, true 在倒数第二行用 )

On error resume next( 你觉得哪条语句需要跳过错误就在它的后面写一句 )

放上我自己编的例子,大家一起进步!网站有的例子我就不放了。放自己写的,希望能帮上别人的。

1. excel 开机密码。 5 次错误自动关闭

2. 隐藏所有工作表( =1 是取消隐藏)

3. 单元格变颜色

VBA开发 篇5

Microsoft Office已作为企事业单位解决办公自动化的理想的工具。而 Visual Basic for Application(VBA)是 Office套件的一部分,用来定制和扩展Office的功能,让用户完成Office本身所不具备的功能,更高效地实现办公自动化[1]。Microsoft Office中的Excel 2007是一款功能强大的办公软件,利用该软件可以完成信息保存、数据计算、数据分析、信息动态发布等功能。但是在Microsoft Office中的Excel 2007软件的使用中,对于单元格的合并处理并不是非常理想,在合并多个单元格时,Excel 2007总是只保留选择区域中左上角单元格的数据,而将选择区域的其他单元格的数据全部删除。当使用Excel 2007处理数据,并需保留合并区域的所有单元格的数据时,Excel 2007就无法满足要求,只能重新录入数据,给工作带来了极大的不便。

1 VBA对象

(1) VBA对象概述

VBA(microsoft visual basic for application)是Microsoft Office的核心组件之一,作为一个嵌入式二次开发引擎[2],VBA被集成到许多大型软件系统之中,众所周知的就有Word,Excel,PowerPoint,以及其他Office程序。Microsoft VBA建立在COM技术基础之上,可以充分定制应用系统,或进行深度的二次开发。集成VBA可以与Microsoft Office共享同一个二次开发环境。在Office中,宏语言VBA 适用于所有应用程序,包括Word,Excel,PowerPoint,Access,Outlook 以及Project。从Office 97 版开始,新增了Visual Basic 编辑器。用户无论是在Excel 中,还是在Word 中甚至于在Access 中建立和管理VBA 都使用统一的方法和标准。

具有开放性的Microsoft Office使用VBA语言进行二次开发。在Microsoft Office Excel 2007平台上使用的VBA为用户定制开发的应用程序,可以解决Excel 2007在具体使用过程中标准命令无法满足用户需求或者标准命令的操作过程过于繁琐等方面的实际问题,达到帮助用户减轻烦琐、机械的日常工作,从而提高用户的工作效率和程序的实用性。

VBA的Application对象共有AddIns集合、Columns和Rows集合、Dialogs集合、Sheets集合等对象集合[3],它们的作用有:

AddIns集合:AddIns集合表示所有当前加载的Excel Add-in;

Columns和Rows集合:这两个集合表示活动工作簿中的列和行;

Dialogs集合:Dialogs集合包括Excel程序中所有的对话框;

Sheets集合:Sheets集合表示返回指定或活动工作簿中所有工作表的集合。

VBA的Application对象常用的属性有ActiveCell,ActiveChart,ActiveSheet,ActiveWindow,ActiveWorkbook,RangeSelection,Selection,StatusBar,ThisWorkbook等。

ActiveCell属性:Application对象的ActiveCell属性表示返回一个表示活动工作簿中活动工作表的活动单元格的Range对象。

ActiveChart属性:ActiveChart属性表示返回表示活动图表的Chart对象,不管它是嵌入的图表还是图表工作表。

ActiveSheet属性:ActiveSheet属性表示返回一个表示当前选中的工作表(顶部工作表)的Worksheet对象。

ActiveWindow属性:ActiveWindow属性表示返回一个表示活动窗口(顶部窗口)的Window对象。

ActiveWorkbook属性:ActiveWorkbook属性表示返回一个表示活动窗口(顶部窗口)中的工作簿的Workbook对象。

RangeSelection属性:RangeSelection属性表示返回一个表示指定窗口中工作表里选择单元格的Range对象,即使在工作表中一个图表对象已经被选择或激活。

Selection属性:Selection属性表示返回活动窗口中被选择的对象。

StatusBar属性:StatusBar属性表示返回或设置状态栏的文本,这个属性允许你更改在Excel窗口底部的状态栏中显示的信息。

ThisWorkbook属性:ThisWorkbook属性表示返回一个表示当前运行的宏代码所在工作簿的 Workbook对象,这个属性允许载入宏定义包含代码的工作簿。

(2) Application对象概述[9]

Application对象是Microsoft Office Excel 2007对象模型中最高级别的对象,表示Excel程序自身。Application对象提供正在运行的程序的信息、应用于程序实例的选项以及实例中打开的当前对象。因为它是对象模型中最高的对象,Application对象也包含组成一个工作簿的很多部件,包括如工作簿、工作表集合、单元格以及这些对象所包含的数据等。Application对象带有175个属性和52个方法,可以设置整个应用程序的环境或配置应用程序。

有很多Application对象的属性可以用来访问Excel 2007程序的各种对象,但是只有小部分是你可能经常使用的。即如:

ActiveCell:返回一个表示活动工作簿中活动工作表的活动单元格的Range对象。

ActiveChart:返回表示活动图表的Chart对象,不管是嵌入的图表还是图表工作表。在一个嵌入的图表被选择或激活时,它就是活动图表。

ActiveSheet:返回一个表示当前选中的工作表(顶部工作表)的Worksheet对象。在一个工作簿中只有一个工作表能成为活动工作表。

ActiveWindow:返回一个表示活动窗口(顶部窗口)的Window对象。

ActiveWorkbook:返回一个表示活动窗口(顶部窗口)中的工作簿的Workbook对象。

RangeSelection:返回一个表示指定窗口中工作表里选择的单元格的Range对象,即使在工作表中一个图表对象已经被选择或激活。

Selection:返回活动窗口中被选择的对象。

StatusBar:返回或设置状态栏的文本。

ThisWorkbook:返回一个表示当前运行的宏代码所在工作簿的 Workbook对象。

(3) Application对象的Selection属性使用方法[9]

Selection属性返回活动窗口中被选择的对象。例如,对于单元格,这个属性返回Range对象;对于图表,它返回Chart对象。如果使用属性而没有对象限定符,等于使用Application.Selection。

2 方案设计

使用VBA在Microsoft Office Excel 2007中进行二次开发时,利用Application对象的Selection属性,设计一个控件。Selection属性返回活动窗口中被选择的对象,如果使用属性而没有对象限定符,等于使用Application.Selection。该控件需要能够对Microsoft Office Excel 2007中的合并区域进行处理,先要读出合并区域的所有单元格的数据,并保存起来,以备使用;然后对所选择的区域进行合并操作,合并操作后,将保存的数据再写回到合并后的单元格中,就完成合并操作。设计框图如图1所示。

3 系统设计

在程序系统设计中,可直接在Microsoft Office Excel 2007提供的Visual Basic编辑器中进行,系统设计分成选择区域数据记数、数据读出、数据写入、程序加载等4个方面的设计。

(1) 选择区域识别

在Microsoft Office Excel 2007进行区域选择后,形成一个选择区域,要由系统自动确认选择区域的大小和编号。在Excel 2007提供的VBA中,使用下面的语句直接识别出选择区域的大小:

行数:Selection.Rows.Count

列数:Selection.Columns.Count

(2) 数据读出

识别出选择区域的大小后,立刻读出选择区域中所有单元格的数据,并把数据保存起来,此时并不知道数据的类型,以及数据量的大小。在Microsoft Office Excel 2007中,在进行区域合并时,根据实际需要,其参与工作的数据量并不是很大,并且也不需要考虑每一个单元格的数据类型,只需要做简单的保存即可。因此,用1个万能型的变量,进行保存,把选择区域中所有单元格的数据采用字符串的连接方法,按顺序连接起来,保存在1个变量中。方法如下:

(3) 数据写入

在单元格合并完成以后,所有选择的单元格合并成1个单元格,这时的数据写入是非常简单的,采用下面的方法即可:

Selection.Cells(1, 1) = MergeData

(4) 程序加载

程序设计好后,Excel有2种加载宏的方法。第一种是在运行Microsoft Office Excel 2007后,在宏中直接加载运行即可;第二种是在Microsoft Office Excel 2007运行的时候进行加载,并且嵌入在Microsoft Office Excel 2007的工具栏上,这种方法使用比较方便,能够直接使用。

Excel有3种类型的加载宏程序,即:Excel 加载宏、自定义的组件对象模型 (COM) 加载宏和自动化加载宏。此处所指的加载宏采用第一类加载宏。将写好的宏文件,保存在Office的安装盘Program Files/Microsoft Office/Office12/Library文件夹中,在Excel 2007启动时,可以自动加载该宏文件[8]。建立如下宏:

完成后,以Merge_Macro.xlam保存在Program Files/Microsoft Office/Office12/Library文件夹中。

选择Excel 2007中的“Office按钮”,选择菜单中的按钮,弹出“Excel 选项”对话框,在对话框中,选择“加载项”,再选择最下面的“转到”按钮,弹出“加载宏”对话框,在对话框中,勾选“Merge_Macro”,单击确定。再选择Excel 2007中的“Office按钮”,选择菜单中的按钮,弹出“Excel 选项”对话框,在对话框中,选择“自定义”选项,将自己编写的宏Macro_Merge添加到“快速访问工具栏”,即可。该宏程序在Windows XP SP3+Office 2007下调试通过。

4 结 语

Microsoft Visual Basic for Application是Microsoft Office的核心组件之一,作为嵌入式二次开发引擎,VBA得到广泛的应用,二次开发对软件在使用方面的性能得到很好的扩展。本文基于VBA对Excel 2007做了一个简单的二次开发,还可以基于VBA对其他软件做二次开发,可以更好地解决工作中的问题,提高了办事效率。

参考文献

[1]张强.Excel 2007与VBA编程从入门到精通[M].北京:电子工业出版社,2008.

[2][美]杰莱,斯太德.Excel 2007 VBA与宏完全剖析[M].郭兵英,译.北京:人民邮电出版社,2008.

[3]魏汪洋.Excel 2007 VBA高级编程宝典[M].北京:电子工业出版社,2009.

[4][美]格林.Excel 2007 VBA参考大全[M].Excel Home,译.北京:人民邮电出版社,2009.

[5]E D BOTT,WOODY.Office 2007应用大全[M].张乐华,朱珂,许晓哲,等译.北京:人民邮电出版社,2008.

[6]卞诚君,刘亚朋.Office 2007完全应用手册[M].北京:机械工业出版社,2007.

[7]郭珺.Office 2007实用技巧四合一[M].北京:电子工业出版社,2009.

[8]马维峰.Office 2007的VBA以及Office开发的随想[ED/OL].[2008-06-06].http://www.builder.com.cn/2008/0606/911988.shtml.

[9]佚名.Excel 2007 Application对象开发指南[ED/OL].[2009-02-03].http://www.vbafan.com/2009/02/03/delvelopers-guide-to-the-Excel 2007-application-object.

[10]XAUTCHAO.VBA知识普及[ED/OL].[2008-11-09].http://www.jacktown.net/dp/dp-bbsthread-18.html.

VBA开发 篇6

AutoCAD是由Autodesk公司开发的工程绘图软件, 是工程制图人员常用的绘图软件之一, 功能十分强大, 在测量工程领域广泛应用, AutoCAD除了具有强大的绘图功能, 开放式体系结构也允许第三方开发者为它编写应用程序, 显著增加了绘图工作效率。

VBA是Visual Basic for Applications的英文缩写, 是由Microsoft创建的, 它是一个功能强大的定制程序开发工具, 用来自动执行任务的一个编程环境。VBA为AutoCAD的二次开发提供类似Visual Basic (VB) 语言所拥有的功能, 引入了对象的程序设计环境, 为开发者提供了用来创建图形用户界面 (GUI) 的可拖拉工具和用来与Auto CAD对象交互的编程语言。

工程技术人员绘制图形时, 也许会重复地一遍遍地执行着相同的绘图任务。如在地下管线测量任务时, 一条街道上存在着具有各种不同属性的管线 (通讯管线、军用光缆、上水管线、污水管线等) , 测量人员要用全站仪将成千上万的各种管线的特征点坐标测量出来, 在AutoCAD上将这些具有相同属性的管线点连接起来绘制成综合管线图。用手工在AutoCAD上连接这些特征点绘制成管线图, 那是一项乏味的、重复的、极低效率的工作, 而且会由于绘图人员的工作疲劳和疏忽产生错误。如果我们的工程技术人员可以使用VBA在AutoCAD平台上进行二次开发, 根据管线绘图任务定制应用程序, 就可以帮助我们自动高效率地完成管线绘图任务。

2、为什么要使用VBA进行Auto CAD二次开发

使用VBA进行AutoCAD二次开发有哪些优点呢?最明显的优点是VBA要比Auto Lisp/Visual LISP、C++易学。基于Auto Lisp或C++语言来对AutoCAD进行二次开发的程序, 对于一个非计算机编程技术专业的工程技术人员来说, 前者的语言的因语句过于繁杂而难懂, 后者与AutoCAD的接口技术过于繁琐而难以掌握。而用VBA进行AutoCAD二次开发, 工程技术人员通过一段时间VBA的学习, 就能够编写出许多能够满足特定绘图功能的VBA宏, 甚至可以开发工程领域的设计、计算、绘图程序了。

AutoCAD2000所包含的VBA与Auto LISP的情形类似, 即VBA与AutoCAD一起共享地址空间, 与AutoCAD执行于同一处理程序, 而与DCL、Auto LISP/Visual LISP相比, VBA在制作对话框方面有明显的优势, 所以它也是适于取代DCL、Auto LISP/Visual LISP的二次开发工具。此外, VBA项目可以独立内嵌在AutoCAD图面中, 为工程技术人员发布应用程序上有很大的用处与灵活性。

此外, VBA可以整合其它具有VBA功能的应用程序的能力。这使得AutoCAD可以成为其它应用程序 (如Word、Excel或Access) 的Automation控制器。通过Auto CAD ActiveX Automation接口, VBA将信息传送给A u t o C A D, 而A u t o C A D V B A也允许V B A环境与Auto CAD同时执行, 并通过Active X Automation接口提供Auto CAD的程序。因此, Auto CAD、Active X Automation与VBA的结合, 不仅可以操作AutoCAD的内部对象, 还可以使用不同的程序语言, 如, Exedl VBA、Word VBA、等来访问这些对象, 在它们之间接收或传送数据。

3、使用VBA对Auto CAD进行二次开发的技术要点

ActiveX对象模型AutoCAD Objects是AutoCAD ActiveX技术的基础, 每一个对象都代表着A u t o C A D的一个构图元素, 编程人员可以通过V B A代码来访问。A u t o C A D是按层结构来组织对象的。Application是最顶部层级的对象, 可以间接或直接地访问模型中的所有对象;它的下面是Preferences与Document, 其中Document对象包含:Paper Space、Model Space、Plot、Utility与Blocks等对象, 可调用当前的Auto CAD图形, 而Preferences对象用来访问反映Options对话框中各页面的对象, 并可进行选项设置;AutoCAD中最底层的对象是点、线、圆、图块等能画出的图形。通常情形, AutoCAD Objects只能访问其下一层级的对象, 但是在代码中用ThisDrwing表示的被激活文档, 它是可以间接地访问其上面层级的Application对象.的。

我们用VBA来对AutoCAD进行二次开发, 首先要学习并掌握AutoCAD Objects的各项属性、事件和方法, 才能在程序的编写过程中灵活地运用。

4、使用VBA对Auto CAD进行二次开发在测量工作的应用实例

实例一:举一个简单例子说明在VBA编程环境下如何通过ActiveX Objects实现将CAD上所有圆对象的圆心X、Y坐标和圆半径写入已有的Access数据库表中, 这些技术和代码同样可用于有Active X功能的其它数据库。

(1) 第一步在C:下建立名为Data的Access数据库。 (2) 创建名为circle的表格, 输入字段名cir X、cir Y、和radius, 定义它们的数据类型为数字。 (3) 退出数据库设计并关闭数据库。 (4) 运行A u t o C A D, 在模型空间中绘制一些圆形、直线、多边形。 (5) 在命令行输入VBAIDE回车, 打开Auto CAD VB Editor, 在下拉菜单中选择工具→引用, 在Microsoft DAO 3.51 Object Library选项前打勾, 单击确定。 (6) 插入用户窗体UserForm, 插入如图所示的标签和命令按钮。 (7) 输入如下代码至命令按钮cmdSave的Click事件程序。

实例二:从没有高程点位图层的数字地形图中取出高程及对应点位坐标数据用以计算土方量可以简略编写以下代码。

5、结语

随着工程行业的激烈竞争, 测绘企业急需以技术革新的方式来提高生产质量与效率。测绘企业技术人员使用VBA来开发专业CAD软件是一种适合年轻测绘技术人员的工作途径。只要对专业的灵敏度和分析力强, 是值得工程技术人员投入时间和精力的。

参考文献

[1]Marion, cottingham, 《AutoCAD VBA从入门到精通》电子工业出版社, 2001.

VBA编程应用实例 篇7

传统绘制等高线靠手工绘制, 具有绘制慢、精度低、不便修改等缺点, 随时计算机技术和测量技术的发展, 目前绘制等高线靠电脑软件来完成。等高线在地形图中往往以多线段来反映, 等高线首曲线以细线表示, 计曲线以粗 线表示。在打开地形测量图时, 有时会发现个别等高线顶点极多 (有时发现有上千个顶点坐标), 一条等高线有时占用了数M的空间, 进行复制、粘贴时操作极慢, 甚至造成电脑死机, 大大影响作图效率。

2 解决方法

通过研究不难发现, 反映一条等高线的多线段顶点数目足够即可, 图纸比例越小, 多线段顶点间距离越大, 反之亦然。等高线一般由碎布点高程根据软件 (如南方cass等) 生成的, 因软件设置或其他原因造成等高线多线段顶 点冗余。因此, 解决方法就是去掉冗余的顶点, 在不影响作图效果的前提下, 从而实现对等高线多线段的优化。

2.1 编程原理

通过图纸比例设置等高线多线段顶点间最小值, 定为L;计算其余多段顶点 (第一点与最末一点除外) 与第一点之间距离, 如果距离小于L, 该点属冗余点; 反之, 该点不属冗余点, 在多线段中该顶点坐标予以保留。

2.2 实现代码

以CAD VBA为编程工具, 以下是实现功能的主要源代码。

以上程序在Autocad2000~2014下通过。

3 用法

运行程序时只需输入实现功能的多线段顶点间最小值L,选定多段时, 程序自动去掉冗余顶点, 删掉原多线段, 根据新的多线段顶点重划等高线多线段。

实现程序界面图如图1所示。

4 结语

用VBA制作论文模板 篇8

关键词:Word,VBA,模板

1 模板的制作

1.1 整体设计

制作论文模板,要对其整体布局进行设置。点击“文件/页面设置”,在页面设置对话框中设置论文的纸张、页边距、装订线等。也可以通过VBA代码来实现:

下面设计论文中用到的文本样式,如一级标题、二级标题、正文等。以二级标题为例说明其设计过程。

(1)点击“格式/样式和格式”,弹出“样式和格式”侧栏,点击“新样式”按钮,弹出“新建样式”对话框;

(2)在“新建样式”对话框中进行相应的设置,在对话框左下角的“格式”下拉列表中,选择“字体”、“段落”等进行相应的设置。需要注意的是“编号”选项,进行适当的选择以后可以对相应样式的字体进行自动编号。

1.2 封面的制作

利用Word提供的域来制作封面的模板。以论文题目的实现为例介绍。

(1)将光标移动到指定位置,单击“插入/域”,打开域对话框;

(2)在域名对应的列表框中选“MacroButton”项,右侧“显示文字”处键入“[单击此处添加论文题名]”,“确定”;

(3)对“[单击此处添加论文题名]”进行字体等设置。

这样就完成了论文题目的域按钮。将鼠标放在显示的文字上方,单击鼠标左键,就会高亮整段文字,再键入实际的论文题目,就会替换原来的文字,同时保持格式和样式。同样的方法可以完成作者信息的录入。

1.3 参考文献的录入

利用Word提供“尾注”功能,简化了对文献的引用和管理。

(1)打开Word的“Visual Basic编辑器”,步骤是:“工具/宏/Visual Basic编辑器”;

(2)插入窗体,在其中加入控件;

(3)打开代码编辑器,键入如下代码:

这样若是插入新文献,只要在编辑控件中输入文献的信息,点确定即可,文献的编号是自动插入的,而且会自动更新;若要引用已有文献,选中“引用已有文献”单选按钮,就会弹出“交叉引用”对话框,从中选中要引用的文献即可。

2 结束语

论文模板虽然功能简单,但是为学生论文的写作带来了很大的方便。只要稍加修改就可以做成满足其它要求的文章模板。

参考文献

[1]侯捷.Word排版艺术[M].北京:电子工业出版社,2004.

关于VBA中的变量声明 篇9

VBA易于学习掌握, 可以使用宏记录器记录用户的各种操作并转换为VBA程序代码。这样用户可以很容易地将日常工作转换为VBA程序, 使工作自动化。因此, 对于在工作中需要经常使用Office套装软件的用户, 学用VBA有助于使工作自动化, 提高工作效率。另外, VBA可以直接应用Office套装软件的各项强大功能, 所以对于程序设计人员的程序设计和开发更加方便快捷。

VBA可以借助于宏记录器完成开发, 实现预定的自动功能, 所以许多初次接触VBA的人员往往对VBA本身的语法规则不那么重视。当需要完成一些较为复杂的功能或对录制完成的代码进行维护时候就会产生困难。所以, 使用VBA必须要对VBA的语法、对象、事件、代码规则等基本知识有所了解。本文选取VBA语法规则中的最基础部分———变量声明进行简单地论述。

1. VBA中变量的概念及命名规则

变量是指在程序的运行过程中随时可以发生变化的量。

变量是程序中数据的临时存放场所。在代码中可以只使用一个变量, 也可以使用多个变量, 变量中可以存放单词、数值、日期, 以及属性。在使用中, 变量可以保存程序运行时用户输入的数据、特定运算的结果, 以及要在窗体上显示的一段数据, 等等。简而言之, 变量是用于跟踪几乎所有类型信息的简单工具。

在VBA中, 每一变量都有变量名。变量名必须以字母字符开头, 不能是VBA中的保留字 (关键字) , 在同一范围内必须是唯一的, 不能超过255个字符, 而且中间不能包含句点或类型声明字符。

在VBA中使用变量的时候还需要注意一些问题。

1.1 变量名在VBA中是不区分大小写的 (如ABC、abc、Abc等都是一样的) 。

1.2 定义和使用变量时, 通常把变量名定义为容易使用阅读和能够描述所含数据用处的名称, 而不要使用一些难懂的缩写如A或B2等。

1.3 根据需要混合使用大小写字母和数字。

1.4 通常每个变量名以两个或三个字符缩写开始, 这些字符缩写对应于变量要存储数据的数据类型。例如, 使用strName来说明Name变量保存字符串型数据。

2. VBA中变量声明的概念

变量在使用前, 必须在代码中进行声明, 即创建该变量。

变量声明的作用是告诉编译器在程序中使用了哪些变量, 这些变量的数据类型和长度。这是因为在编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区, 这样可以优化程序的执行。

3. VBA中变量声明的方式

VBA中声明变量有两种方式:显式声明、隐式声明。

显式声明:用声明语句创建变量。下例就是在程序中声明一个整型变量intIndex:

dim intIndex as integer。

隐式声明:变量可以不经声明直接使用, 此时VBA给该变量赋予缺省的类型和值。这种方式比较简单方便, 在程序代码中可以随时命名并使用变量, 但不易检查。

4. VBA中显式声明变量

显式声明变量是在使用该变量之前, 调用声明语句对该变量进行声明。显式声明的语法为:

声明语句变量名[, 变量名2, 变量名3……][as数据类型]

4.1 声明语句

VBA中的声明语句包括Dim、Static、Public、Private。

4.1.1 使用Public语句可以声明公共模块级别变量 (公有变量)

Public strName As String.

公有变量可用于工程中的任何过程。如果公有变量是声明于标准模块或是类模块中, 则它也可以被任何引用到此公有变量所属工程的工程中使用。

4.1.2 使用Private语句可以声明私有的模块级别变量 (私有变量)

Private strName As String.

私有变量只可使用于同一模块中的过程。

4.1.3 使用Dim语句同样可以声明私有的模块级别变量 (私有变量)

Dim strName As String.

在模块级别中使用Dim语句与使用Private语句是相同的, 不过使用Private语句可以更容易地读取和解释代码。

4.1.4 使用Static语句所声明的变量在调用时仍保留它原先的值。

Static strName As String.

4.2 变量的数据类型

在VBA中, 变量可以声明成下列数据类型中的一种:Boolean、Byte、Integer、Long、Currency、Single、Double、Date、String (变长字符串) 、String*length (定长字符串, *代表字符串长度) 、Object或Variant。如果未指定数据类型, 则变量被赋予缺省的Variant数据类型。另外也可以使用Type语句来创建用户定义类型。

4.3 变量的作用范围

在显式声明中, 根据声明语句的不同, 变量具有不同的作用范围。在过程中定义的变量对于这个过程是专用的, 它的作用范围就是该过程。过程级变量只有在声明它们的过程中才能被识别, 在该过程之外不能访问, 所以在一个过程中不可以使用Public语句声明一个公有变量;在模块中定义的变量则有私有和公有两种, 使用Dim和Private语句声明的变量的作用范围是该模块, 该模块中的所有过程都可以调用这些变量, 而使用Public语句声明的变量其作用范围是工程内所有模块, 当前模块所属过程内的所有模块都可以调用这些变量。

4.4 同时声明多个变量

在显式声明中, 可以在一个语句中声明几个变量。而为了指定数据类型, 必须将每一个变量的数据类型包含进来。在下面的语句中, 变量intX、intY与intZ被声明为Integer类型。

Dim intX As Integer, intY As Integer, intZ As Integer.

在下面的语句中, 变量intX与intY被声明为Variant类型;只有intZ被声明为Integer类型。

Dim intX, intY, intZ As Integer.

在声明语句中, 不一定要提供变量的数据类型。若省略了数据类型, 则会将变量设成Variant类型。

5. VBA中隐式声明变量

VBA中, 变量可以不经声明直接使用, 此时VB给该变量赋予缺省的类型和值。这称为隐式声明。变量的隐式声明方法有三种。

5.1 在使用之前不声明变量, 程序运行中遇到未作声明的变量名时, 它就临时生成新的变量, 分配内存地址。新变量的类型为Variant类型的变量, 可以放置所有其他类型的数据。Visual Basic根据变量被赋予的数值来调整变量类型。例如:

VarTemp1=“中华人民共和国”’变量VarTemp1在赋值时自动成为字符串型变量

VarTemp2=300’变量VarTemp2在赋值时自动成为整数型

5.2 可以省略声明语句而用变量类型声明字符生成确定类型的变量。在程序执行时, 生成有确定类型的变量。可以用TypeName () 函数返回变量的类型以验证变量到底是何种数据类型。变量类型声明字符包括:

“%”表示integer类型;

“!”表示single类型;

“&”表示Long类型;

“#”表示Double类型;

“$”表示String类型;

“@”表示Currency类型。

5.3 第三种变量隐式定义方法是, 用DefXXX语句声明变量, 其中“XXX”部分是VBA的数据类型名称保留字。这种方式定义的变量只对它所在的模块起作用。示例:

DefInt A-K’将名称以A至K开头变量的缺省数据类型设为Integer类型。

DefStr L-Z’将名称以L至Z开头变量的缺省数据类型设为String类型。

6. 显式声明和隐式声明方法的对比

显式声明使用中需要对变量的作用范围、数据类型等进行明确定义, 大大提高了程序的易读性;隐式声明使用方便, 代码量少, 但是开发过程中如果产生命名冲突和拼写错误等, 由于程序运行过程中不能检查出错误, 其执行结果就不能达到预期的效果, 而且这种错误不能利用编译系统检查出来, 较难查找, 特别是在大型复杂的程序中更是如此。因此, 要养成在使用一个变量之前先声明它 (即显式声明) 的良好的编程习惯。

在VBA中, 如果不想使Visual Basic生成隐含声明, 可以将Option Explicit语句放置于模块中所有的过程之前。这一语句在模块级别中使用, 强制显式声明模块中的所有变量。如果模块包含Option Explicit语句, 则当Visual Basic遇到一个先前未定界的变量或拼写错误, 它会发生编译时间的错误。

本文主要介绍VBA中的变量声明方法。首先对涉及的变量、变量声明等概念进行了论述。在此基础上本文详细叙述了声明变量的两种方式, 以及相关的变量数据类型、变量作用范围进行了阐述, 最后对两种声明方式的特点进行了对比。通过研究我们可以发现, 在实际的VBA开发中, 变量声明可以说是一切程序运行的基础, 开发人员选择合适的声明方式, 养成良好的使用习惯, 对程序开发有着极为重要的意义。

摘要:基于Microsoft Office系列办公软件中内嵌的VBA语言, 本文作者针对其语法规则中的变量声明规则进行了论述, 重点介绍了显式声明和隐式声明的用法, 并对两种声明方式进行了对比, 提出了程序开发中应注意的问题。

关键词:VBA,变量声明,显式声明,隐式声明

参考文献

[1]Microsoft Visual Basic6.0循序渐进教程专业版[M].

[2]刘曜.VBA变量、对话框及自定义函数[J].中国会计电算化, 2002, (12) .

[3]喻革武.EXCEL中VBA编程语言的命令介绍及编程[J].电脑学习, 2001, (04) .

上一篇:图书馆咨询服务职能下一篇:FLASH动画教学