VBA二次开发技术论文

2024-06-02

VBA二次开发技术论文(共7篇)

VBA二次开发技术论文 篇1

0 引言

在铁路站场平面布置图的绘制过程中, 道岔绘制是一个重要的组成部分, 所耗费的时间也多, 因此提高道岔绘制速度可大大提高工作效率。在传统的道岔绘制过程中, 主要是采用查表法进行手工绘制。对于一般的道岔 (如单开道岔) , 可以根据道岔表[1]的参数手动快速绘制出, 对于复杂道岔 (如岔后缩短曲线、切线不平行无缓和曲线的反向缩短曲线) 也可以通过查表法进行手动绘制, 但是存在着两个缺陷:一是复杂道岔参数多, 需要绘制辅助线;二是查表法存在局限性, 如果表中没有需要的数据只能根据公式进行手工计算, 然后再根据辅助线进行绘制, 这种绘制方法操作时间长, 工作量大。针对这种情况, 本文提出了在AutoCAD的平台上用VBA对其进行二次开发, 对需要的数据进行参数化, 自动绘制复杂道岔, 并以岔后缩短曲线为例对本方法进行验证。

1 道岔选择

在实际铁路站场平面布置图中道岔的类型很多, 诸如单开道岔、对称道岔、交叉渡线等。对于这些简单的道岔可以直接根据道岔的型号和类型在AutoCAD里面绘制, 体现不出复杂道岔自动化绘制的优势, 因此, 本文选择稍微复杂的道岔———后缩短曲线作为案例对象。

2 VBA编程设计思路

为了在复杂道岔绘制过程中使用方便, 本设计采用可视化参数绘图的原则进行设计。可视化参数绘图的设计流程如图1所示。

3 可视化参数绘图界面

为提高本设计方案的可操作性, 根据道岔的特点以及所需的相关参数设计对应的可视化界面, 如图2所示。

4 代码实现

针对岔后缩短曲线的特点, 首先对岔后缩短曲线进行抽象化处理, 定义出各相关点, 如图3所示。

图3中, a点为岔心, k点为岔后直线上任一点, 其他点都是由输入的参数根据《铁路工程设计技术手册-站场及枢纽》中的相关公式进行计算确定的。

最后编制的相关代码如下:

5 结果验证

笔者从《铁路工程设计技术手册-站场及枢纽》一书中的岔后缩短曲线数据表中挑选了有代表性的10个曲线案例与利用VBA编程自动绘制的岔后缩短曲线进行对比, 结果发现, 二者完全吻合。由此证明本方法完全可以满足岔后缩短曲线的绘制, 并且还不受书中数据表有限的限制。

摘要:在铁路站场平面布置图绘制中, 道岔的绘制过程繁琐而单调。特别是对于复杂道岔 (如岔后缩短曲线) , 需要耗费大量的时间和精力, 工作效率因此而严重降低。针对这种情况, 利用VBA对AutoCAD进行二次开发, 简化了复杂道岔的绘制过程, 并以岔后缩短曲线为例进行了验证说明。

关键词:VBA,AutoCAD,道岔

参考文献

[1]铁道第四勘察设计院.铁路工程设计技术手册——站场及枢纽[M].北京:中国铁道出版社, 2009.

[2]张国宝.AutoCAD2000VBA开发技术[M].北京:清华大学出版社, 2000.

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

VBA二次开发技术论文 篇2

参数化技术在计算机辅助设计领域已经得到了广泛的应用。参数化方法通过对图形作参数化建模来实现。图形的生成步骤是程序参数化的基础, 由它形成程序的流程, 程序参数化将生成图形的过程编制成程序。这种参数化方法求解快, 不需要通用的推理算法, 专用性很强, 一个程序只能设计一个固定的图形, 一般应用在结构比较稳定、拓扑结构比较简单的产品设计中。直墙半圆拱巷道断面结构比较固定, 锚杆严格按照间距布置, 所以用程序参数化建模比较适合, 可以节省工作时间, 减少工作量。

1 VBA简介

Microsoft VBA是基于Active X Automation技术的Auto CAD二次开发工具, 它是一个面向对象的编程环境, 可提供类似VB的丰富开发功能。从语法角度讲, VBA是VB的一个子集, 它们的语法结构是相同的。VBA和VB的主要差别是VBA和Auto CAD在同一进程空间中运行, 提供的是具有Auto CAD智能的、非常快速的编程环境。

Auto CAD VBA允许VBA环境与AutoCAD同时运行, 并通过Active X Automation接口对Auto CAD进行编程控制。这样就把这三者紧密结合在一起, 提供了一个非常强大的接口。Auto CAD、Active X Automation和VBA的这种结合方式不仅为操作Auto CAD对象, 而且为向其他应用程序发送或检索数据提供了功能极为强大的接口。正是基于以上的这些优点, 本文选择了VBA作为巷道断面参数化建模的开发工具。

2 数据库分析与设计

Microsoft Access是一种功能强大, 而且简单易用的数据库管理系统, 具有可视化操作界面, 即使非计算机专业人员也会使用它。AutoCAD VBA应用程序通过ADO访问Access数据库, 并且可以实现复杂的数据库事务操作。

本次开发创建了数据Data.mdb, 用到两个表, 表Point和表Power。其中

a.表Point存储需要标注力的位置, 即离锚杆一端的距离。它的数据结构定义如下:

锚杆编号:Number, Long, 主键

测点1位置:Number, Long

……

测点5位置:Number, Long

b.表Power存储对应Point位置的力的大小, 它的数据结构定义如下:

锚杆编号:Number, Long, 主键

测点1:Number, Long

……

测点5:Num-ber, Long

3 程序设计的基本思路

本文介绍了通过Auto CAD的VBA二次开发方法, 利用用户输入的模型参数自动由Auto CAD绘制巷道模型———直墙半圆拱, 由两个参数即可建立模型, 它们是巷道的高度Height和宽度Width。由公式L=Height-Width/2可以计算出直墙的高度L, 上面半圆拱的半径R=Width/2。根据计算出的参数绘制三条直线段和一段圆弧就可以建立巷道断面的模型。

锚杆绘制考虑了两个参数:锚杆长度Length和锚杆的间距Interval。第一根锚杆画在半圆拱的最顶部, 由巷道的高度和锚杆的长度可以确定它的两个端点坐标分别为 (0, Height) 和 (0, Height+Length) 。注:取巷道底部中心点为原点。顶部和帮部的锚杆根据锚杆的布置间距逐一绘制上。由公式θ=Interval/R可以计算出顶部锚杆的布置角度q, 然后可以计算出锚杆两端的坐标, 绘制一段直线即可。

N为1/4圆上的锚杆数, 最后半圆上剩下一点长度, 但不足插入一根锚杆, 必须加上直墙的长度L一起计算帮部的锚杆数M。

使用循环语句, 可以绘制出帮部的锚杆。最后一根锚杆需单独绘制。因为最后一根锚杆需要与水平呈45O角, 端点坐标需单独计算, 然后绘制。

围岩松动圈是根据松动圈的半径, 在巷道周围绘制出一个圈来表示松动圈的大致位置。需要曲线圆滑, 故用了巷道周围的6个点修正松动圈的形状。绘制的时候根据6个点得出12个的坐标。12点编号分别为1, 2, 3, ……, 12, 用1、2、3绘制一条弧线, 但只连接1和2, 用2、3、4绘制一条弧线, 连接2和3, ……, 用11、12、1绘制一条弧线, 连接11和12, 使得这12个点的连线近似一条圆滑的曲线。

在锚杆指定的位置标注力的大小, 只需要标注点的位置和标注力的值, 样式都相同, 故把标注力做成一个块。不同点的标注只是修改插入块的坐标位置和里面的文字即可。标注点的位置和标注力的值由数据库存储。力的标注样式如图1所示。

4 程序功能的实现

程序绘图部分分为四个独立的模块:巷道断面、锚杆、松动圈和锚杆受力标注。每个模块绘图时都新建一个图层, 单独设置图层的颜色和线型等。绘图中用到的主要方法是绘制直线和圆弧, 故使用以下模块来简化代码, 画直线和圆弧时不需要加This Drawing.Model Space, 从而使代码简明易懂且代码量减少。

数据库操作采用ADODB方式访问, 具体数据库连接代码如下:

程序运行时的主界面如图2所示, 左边是巷道、锚杆和松动圈参数, 中间上部是数据库浏览和操作, 可以浏览和修改力标注部分, 中间下部是用户选择需要绘制的部分。参数填写完毕, 所需要绘制的部分选上, 然后点击“绘制图形”即可在CAD中绘制出图形。图3给出一个根据程序绘制好的巷道断面模型图, 紫红色的小方块是锚杆受力标注点, 绿色线是松动圈范围。

5 结论

本文对巷道断面这种比较固定的模型进行了参数化建模, 并制作完成了VBA程序。通过Auto CAD运行VBA程序, 输入适当的参数即可建立一个巷道断面模型, 大大低于人工绘制所需要的时间, 而且准确性比较高, 不会出现人为的误差, 从而提高了工作效率。由此可见, 充分利用Auto CAD二次开发的功能可以大大提高绘图的效率, 而且图形规范统一, 方便规范化管理。本程序还可以添加别的功能模块, 从而能满足用户的更多需求, 以后将逐步完成后续的参数化建模研究工作, 以期形成完整、实用的系统。

摘要:以AutoCAD为软件平台, 以参数化建模为向导, 利用VBA工具对其进行二次开发, 输入适当的参数即可建立一个巷道断面模型, 可以根据需要自行选择绘制巷道、锚杆、松动圈和锚杆受力模块, 每个模块绘图时都新建一个图层, 单独设置图层的颜色和线型等, 同时通过ADO访问Access数据库实现复杂的数据库事务操作的功能, 并且提供了友好的可视化界面, 极大的提高了效率实现规范化的管理和应用。

关键词:AutoCAD,参数化建模,VBA,二次开发,数据库

参考文献

[1]王永辉, 胡青泥, 李红彩.AutoCAD二次开发方法的研究[J].计算机系统应用, 2007.

[2]张帆, 郑立楷, 王华杰.AutoCAD开发精彩实例教程[M].北京:清华大学出版社, 2006.

[3]潘地林.AutoCAD2005实用教程[M].北京:中国科学技术大学出版社, 2005.

[4]杨昌明, 陈次昌等.基于AutoCAD VBA的轴承参数化建模方法的研究[J].机械科学与技术, 2008, 1, 17 (1) :25-27.

[5]刘光伟.基于VBA的AutoCAD二次开发在露天矿床建模中的应用研究[D].阜新:辽宁工程技术大学, 2007.

VBA集成技术研究 篇3

VBA对于许多Office用户来说并不陌生,自从Office97问世以来,VBA已成为标准的开发环境,得到了所有Office应用程序的支持。基于该技术,任何其他公司可以将VBA集成到他们的产品中去,目前全世界已有超过80套软件或系统集成了VBA技术[1],例如辅助设计软件AutoCAD,流程绘制软件Viso2000,以及自动化组态软件iFix和WinCC等。但是目前还很少见到国内有集成VBA技术的软件或系统。熟悉VB的开发者会发现使用VBA 非常容易上手,因为VBA几乎继承了VB的所有特性。除此之外,VBA真正强大的方面是它能够被集成到一个宿主程序中,利用VBA可以对宿主程序的各个功能进行调用,所以它又是一个完善的二次开发环境,目前VBA的最新版本是6.4。

关于Office环境下的VBA应用文章已有很多,但是在体会到Office中VBA强大功能的同时,许多开发者都要问,如何在自己开发的程序中集成VBA环境并使之具备二次开发功能呢?这方面的文章目前并不是很多,目的是探讨VBA的集成途径。

1 VBA集成途径

在讨论VBA之前,首先简要介绍一下VBA的技术基础——COM组件技术。自从Windows95操作系统问世以来,基于模块化思想,微软提出了组件技术,历经COM/COM+、OLE以及ActiveX发展过程,虽然叫法不同,其技术基础还是COM[3]。到了Windows2000以后,整个操作系统基本上是由组件来搭建,从应用层的画笔、媒体播放器到内核层的设备驱动程序,甚至数据库驱动程序(OLE DB)都被封装成组件。所以,Windows平台下的开发者不能不对COM组件技术有所了解。具体的COM组件技术不是本文的重点。

1.1 集成的主要工作

在集成VBA的过程中,一个主要工作就是将宿主应用程序的各个功能按照COM组件规范进行封装,建立一整套组件功能块。VBA在宿主程序的进程环境中,利用VB引擎来控制程序内部的组件功能块或者是外部的应用组件,其途径是调用宿主程序暴露出来的双接口—— IUnknown 和 IDispatch 下的属性和功能函数。

另一个重要工作就是将VBA的开发环境(简称IDE)集成到宿主程序中。VBA的IDE是一个多文档介面,和VB界面没什么区别,它看似与宿主程序分离,但实质上通过一系列的钩子与宿主程序紧密地连接在一起。用户可以方便地在VBA的IDE和宿主程序之间切换。当宿主程序关闭时,VBA的IDE也将自动关闭。

1.2 集成途径

集成VBA的途径主要有两种:一种是直接利用VBA的核心API,另一种是利用APC工具。VBA的核心API提供了数据结构体、常量、错误代码以及多达26个接口。直接利用VBA的核心API进行集成,工作量大且比较复杂。APC是微软提供的集成VBA的主要工具,它屏蔽了核心API的具体细节,极大地简化了VBA集成过程,而且在使用APC时,还可以灵活地调用核心API。

APC充分整合现有的开发环境,向开发者提供了MFC类和ATL模板类库。除此之外,APC还为VB环境提供了Automation Objects,使用这些自动化组件,VB的使用者同样能够进行VBA的集成工作。

2 APC集成工具

为了进一步说明APC,图1给出了APC对象模型结构图。

图1中,每个框中上方的名称为VB对象名,下方以“I”开头的为C++接口对象名。主要对象说明如下:

Apc :用来提供访问VBA宿主程序的途径。它是VBA集成中的主要对象。

Ide :它是VBA的集成开发环境,如编译、调试等。

VBE :VB代码的编辑器。

MacrosDialog :一个宏列表对话框。列出用户编写的宏。

Procedure :描述项目Project中的一个子程序,该子程序可以在项目中的任何位置调用。

Project :描述一个打开的项目,一个项目对应一个文档,由项目集(文档集)来管理。

ProjectItem :描述项目中的一个条目,如台代码模块(code modules)、类模块(class modules)。

PropertiesWindow :提供访问VBA属性窗口的途径。

另外,APC还提供了集合对象——Categories、Controls、Instances、MiniBitmaps、Procedures、ProjectItems、Projects、Scopes,这些集合对象用于相应的对象管理。

Recorder :提供宏录制功能,典型的用途是记录用户的一组操作过程。

3 实 例

在VC6环境下,利用MFC和APC集成VBA的主要过程如下:

3.1 准备工作

1) 安装VBA 6.4 SDK;

2) 设置VC的工程环境变量,添加头文件路径C:Program Filesvba6sdkinclude,添加库路径C:Program Filesvba6sdklib;

3) 创建一单文档工程VbaCal。

3.2 应用程序层支持

应用程序层需要实现如下几个功能:

1) 管理和显示VBA集成开发环境(IDE),即VB环境界面;

2) 暴露应用程序对象,即将应用程序类变成组件对象;

3) 提供在VBA环境和应用程序主窗口环境之间切换功能,并能够正常地关闭VBA环境。

主要实现步骤如下:

1) 在预编译头文件中定义宏。

#define _App CVbaCalcApp

#define _Doc CvbaCalcDoc

2) 在应用程序头文件中添加using namespace MSAPC;以方便使用APC组件。

3) 创建一IDL文件calc.idl,并定义应用程序组件接口及类对象。

interface IdualApplication : Idispatch

{

HRESULT Application([out, retval] IdualApplication** Application);

HRESULT Parent([out, retval] IdualApplication** Parent); //返回父对象

HRESULT Name([out,retval] BSTR* pVal); //返回应用程序名

HRESULT VBAVersion([out,retval] BSTR* pVal); //返回VBA当前版本

HRESULT VBE([out, retval] Idispatch** VBE); //返回VBE扩展对象

…… //其它自定义函数

};

coclass Application

{ [default] interface IdualApplication; };

4) 定义一个类CatlApplication,用来实现组件接口IdualApplication。

5) 修改应用程序类,通过模板类CapcApplication来继承CatlApplication。

Class _App : public CapcDualDyn<

CapcApplication<_App>,

CatlApplication,

IdualApplication,

&IID_IdualApplication>

{… …}

3.3 项目层支持

项目层是集成过程中的关键一环,因为所有VBA代码必须存在于一个项目内,一个项目关联一个文档。每个VBA项目包含多个条目,如代码模块(code modules)、界面(forms)、类模块(class modules)及外部引用(references)等。当从主程序内保存文档时,与其相关联的VBA项目同时得到保存。当从VBA的IDE中保存文档时,主程序文档也得到保存。

主要实现步骤如下:

在类库VBACalc内定义文档接口IDualDocument及类对象。

interface IDualDocument : IDispatch

{

HRESULT Application([out, retval] IDualApplication** Application);

HRESULT Parent([out, retval] IDualApplication** Application); //返回父对象

HRESULT Name([out, retval] BSTR *pVal);

//返回当前文档的名称

HRESULT Save(); //保存文档

…… //其它自定义函数

};

coclass Document

{ [default] interface IDualDocument; };

1) 定义一类Documentua

并实现IDualDocument接口下的函数。

2) 修改文档类,通过模板类CApcDualDyn来继承CApcDocument和接口类Document。

class _Doc : public CApcDualDyn<

CApcDocument<_Doc>,

Document,

IDualDocument,

&IID_IDualDocument>

{ …… }

3.4 实现应用程序类及文档类函数(略),编辑链接

图2是本例程运行界面,左侧是宿主程序,右侧是VBA的IDE。在IDE的左侧是项目集窗口,由于是单文档,所有只有一个项目VBACalculator。IDE的右侧是代码编辑窗口,可以对代码模块、界面和类模块进行编辑。

4 小 结

VBA是一种完全面向对象体系结构的编程语言,由于其易用性和强大功能,许多应用系统将其作为二次开发工具。从功能上来说,VBA与VB几乎完全一样,或者说VBA是VB的一个子集。但它们之间更本质的区别在于VBA没有自己独立的运行环境,必须依附于主应用程序。正因为要依附于主应用程序,使得VBA与主应用程序之间的通信简单而富有效率。所以说,VBA给程序员提供了一个集成二次开发环境的选择,有了二次开发环境,就可以使应用程序更具有灵活性和适应性。

摘要:首先介绍了VBA产生背景、特性和功能。然后,分析了VBA的系统结构,集成途径,重点剖析了VBA集成工具——APC。最后讲述在VC++6环境下,利用APC(Application Programmability Component)集成VBA环境的关键步骤,并以一个事例说明之。

关键词:COM,OLE,VBA,APC

参考文献

[1]VBA SDK6.4帮助文档.

[2]Gregory Brill.精通COM+.黄志军,等译.机械工业出版社,2002.

VBA开发考试系统的方法初探 篇4

1 再认识EXCEL

Microsoft Excel是微软公司的办公软件Microsoft offi ce的组件之一, 是微软办公套装软件的一个重要的组成部分, 它可以进行各种数据的处理、统计分析和辅助决策操作, 广泛地应用于管理、统计财经、金融等众多领域。但一般用户只知道它是一个制表软件, 并且在处理格式方面远不及Word表格功能强大, 稍熟悉的用户对EXCEL函数、计算、数据处理功能往往还是赞不绝口, Excel中大量的公式函数可以应用选择, 使用Excel可以执行计算, 分析信息并管理电子表格, 对数据信息列表进行数据资料图表制作, 实现许多方便的功能。

不仅如此, Excel (包括其它offi ce的组件) 还具有程序设计功能, 对一般用户来讲, 这一点可以称得上鲜为人知, 其VBA语言和其他开发语言一样, 可以提供强大功能, 开发任意类型的信息系统;更专业方面, 它还具有数据库功能, 可以实现数据库的基本管理。

2 考试系统初步构想

基本功能:

(1) 老师可随时建立、修改、完善题库, 能够随机抽题, 保证每个考生每次的题目不雷同, 按规定格式组卷, 试卷具有防修改功能

(2) 考生只能在指定区域答题, 保护区域只能阅读, 不能选定, 鼠标、光标都不能驻足, 答题区域尽量用下拉列表选择, 保证数据完整性、有效性。

(3) 考生交卷 (自动交卷) 后, 文档完全锁定, 保留提交 (卷) 标记

(4) 保护评阅试卷密码, 老师输入密码后, 自动阅卷、评分, 并给出评判和参考答案, 保留阅卷标记

(5) 已经阅卷的试卷, 给出提示。

(6) 定时器功能自动显示考试剩余时间, 剩下5分钟进行提示, 时间到点, 自动交卷, 自动保存关闭。

3 定时器的实现

定时器 (Timer) 在C#、VB等系统开发语言中是极其普遍的控件, 而VBA恰恰没有定时器。但功能可由Application对象的On Time方法来实现, On Time安排一个过程在将来的特定时间运行 (既可以是具体指定的某个时间, 也可以是指定的一段时间之后) 。

3.1 两种用法

(1) 特定时间执行某一过程, 如Application.On Time Time Value ("12:00:00") , "displaytime", 就是12点执行displaytime过程。

(2) 特定时间段后执行某一过程, 用法为:现在时间+时间段, 如:Now+Time Value ("00:00:01") , 本质上都特定时间。

3.2 两点说明

(1) 递归调用因为On Time执行某一过程后不能自动重启, 因此执行的过程必须包含重启语句, 实现递归调用。

(2) 中止方法既然递归调用, 那就不能自动停止, 因此必须有条件退出执行过程。

基于上面两点, 现通过具体过程进行说明:

过程设定D2单元格显示时间, 初始化为1小时, 倒计时每秒显示, 过程框架如下:

'完成自动提交后的工作, 如:设定状态:已提交;显示考试日期、开始时间、结束时间、用时多少、删除提交按钮、锁定文档、保存文档等

必须说明, displaytime是This Workbook对象的通用过程, 不能自动启动, 通过This Workbook的Workbook_Open () 启动, 因此Open () 必须有包含displaytime启动语句。

Private Sub Workbook_Open ()

'其它语句、功能……

displaytime'首次启动

End Sub

摘要:VBA作为针对应用而设计的程序设计语言, 其实用性是其它程序设计语言无法比拟的, 而标准化考试 (客观题考试) 又无须更多人工参与, 所以运用Excel VBA完成考试系统的随机组题和自动评分, 简化考试的繁杂步骤, 自动完成整个考试过程。

关键词:VBA,考试系统,方法

参考文献

[1]李政.VBA应用基础与实例教程[M].北京:国防工业出版社, 2009:313-315.

VBA二次开发技术论文 篇5

Excel VBA(Visual Basic for Applications)是内嵌于Excel的程序开发语言,在Excel中可运行Visual Basic程序完成较复杂的工作,实现高效办公[1,2]。当然,作为一种功能强大的宏语言,通过编程也能实现对网页的操控。

将学生的各项成绩上传学校教务管理信息系统是每个教师期末必须完成的工作。由于许多教务管理信息系统没有提供批量导入成绩的功能,老师们不得不将已经整理好的电子成绩,采取复制粘贴的方法,再次人工录入相应的网页控件。工作重复低效,而且难免出错[3,4]。

为打破成绩录入“瓶颈”,实现了Excel电子成绩的自动快速准确上传,本文以某高校成绩录入为例,给出基于Excel VBA成绩自动上传系统的详细开发过程。

2 准备工作

在编写代码前,需要熟悉成绩录入界面、手工操作过程和界面网页元素的定位属性。网页元素的定位属性(包括id、name和索引号等)的获得,还需借助“网页按键精灵”等工具。在“网页按键精灵”中打开信息系统成绩录入界面后可获得图1结果,上面窗口显示某高校教务管理信息系统的成绩录入主要界面,下面窗口显示网页元素分析结果。

手工录入时,在成绩录入界面可依次输入学号(也可根据姓名提示而省略本项)、技能、平时、期末和总评成绩,点击“添加记录”,若信息系统存在此学号,该生成绩入库,同时显示在界面下半部的成绩表中。编程就是模拟这个人工过程。

获取网页元素属性,只需点击要观察的网页元素,其详细分析结果便显示在下面窗口。本系统根据ID属性定位,从图1可见,点击学号后,显示的ID属性为txt Xh。同样操作,获得技能、平时、期末、总评和添加记录的ID属性分别为txt Jncj、txt P-scj、txt Qmcj、txt Cj Insert和bt Add。

3 界面设计

打开Excel,在Sheet1的A列至G列的首行输入“序号”、“姓名”、“学号”等信息,其中前二列为校验信息,后五列为要上传的信息。将H列至L列合并,插入艺术字“成绩自动上传”。在工作表中绘制一个圆角矩形,分别设置填充效果和阴影,复制粘粘贴贴成成三三个个并并添添加加文文字字作作为为菜菜单单。。最最后后将将SShheeeett11命命名名为为““主主界界面面””,,将将其其他他表表单单删删除除,,以以文文件件名名为为““成成绩绩自自动动上上传传””保保存存。。见见图图22。。

4 代码编写与录入

4.1 操作说明模块

本模块显示一个消息框,为教师提供操作指导。

4.2 数据检查模块

数据检查模块分别检查学号和成绩的合法性。

4.3 成绩上传模块

数据上传网页的实现方法虽然有较多[3,4,5],但大致分为两步,首先寻找目标浏览器窗口,以获得操作句柄,然后利用句柄完成上传工作。

4.4 代码的录入及与菜单关联

在Excel中,按快捷键Alt和F11,进入VBA编缉器。点击“插入-模块”,模块1便出现在工程中。在模块1录入操作说明过程Opguide()、数据检查过程Datacheck()及成绩上传过程Autoupload(),保存,退出VBA编缉器。

在Excel下,右击菜单“操作说明”-“指定宏”-“Opguide”-“确定”,完成操作说明过程Opguide()代码与菜单“操作说明”的关联。进行相似的操作,完成其它过程代码与菜单的关联。

5 结束语

本系统基于Excel VBA完美实现电子成绩的自动上传,实际运用结果表速度很快,在网络正常的情况下,一分钟内即可完成一个班(约60人)的学生成绩上传工作,且设计相对简单,操作十分方便,表现出很好的便捷性和实用性[5]。Excel是办公室数据处理的常用软件,VB是非专业人员常用的计算机语言,只要掌握了VB,VBA就能很快上手,因而运用VBA开发的系统具有良好的可普及性和较高的推广实用价值。

参考文献

[1]许小荣,夏跃伟,高翔,等.Excel VBA语法与应用手册[M].北京:电子工业出版社,2010.

[2]焦萍萍,周显春.EXCEL中的VBA程序设计[J].电脑知识与技术,2016,12(11):63-64.

[3]刘松.一种快速将本地教学数据上传到网络教学系统的方法[J].智能计算机与应用,2013,3(3):93-94,封3.

[4]江治.利用VBA实现网页中自动录入成绩[J].安庆师范学院学报:自然科学版,2010,16(3):124-127.

VBA二次开发技术论文 篇6

关键词:AutoCAD,零件序号标注,明细表,扩展数据

0 引言

从AutoCAD11.0引入扩展数据 (Xdata) 和扩展记录对象 (Xrecord) 概念以来, 利用“块”属性存取非图形数据不再是唯一方法, 扩展实体数据的应用使得存取非图形数据更加灵活、方便。从AutoCAD14.0开始VBA集成到AutoCAD, 它具有大多数的VB语言功能, 通过Active XAutomation可以操纵几乎所有Auto CAD对象。本文阐述了采用VBA操纵AutoCAD扩展实体数据开发零部件序号标注及明细表关联生成系统的实践方法, 为后续的零件信息自动提取、统计及工艺设计 (CAPP) 与产品数据管理 (PDM) 、企业资源计划 (ERP) 等软件平台之间实现信息共享奠定基础。

1 扩展实体数据 (Xdata) 概述

1.1 扩展实体数据的结构

实体的扩展数据由应用程序所建立, 跟随在该实体常规的实体数据之后, 它与常规实体数据一起构成内容更加广泛的实体数据。

其结构形式为: (-3 ("AppName" (组码.数据) (...) (...) ) ("AppName" (组码.数据) (...) ) (...) ) ) 。-3表示扩展数据开始;AppName为登记的应用类型名。

1.2 扩展实体数据的附着与提取

VBA、Visual Lisp等应用程序均提供了函数来附着和访问扩展实体数据, 在本文中介绍VBA的附着与提取函数:Set Xdata和Get Xdata。

Set Xdata语法:object.SetXdata XdataType, Xdata

Get Xdata语法:object.GetXdata XdataType, Xdata其中:object—需要附着扩展数据的实体对象

XdataType—组码数组, 一般声明为Integer

Xdata—扩展数据数组, 一般声明为Variant

下面给出使用Set Xdata和Get Xdata来附着和提取扩展数据的子过程。

1.2.1 扩展数据附着子过程

1.2.2 扩展数据提取子过程

2 装配图标题栏、零部件序号标注及明细表关联生成系统建立

2.1 实体扩展数据附着方法设计

装配图特征信息主要由图纸特征 (标题栏) 和零部件特征 (序号和明细表) 两部分组成。在程序设计中将这两部分特征信息分为三类实体:标题栏、序号标注和明细表。表1为实现零部件序号标注及明细表自动生成系统采用实体扩展数据附着方法。

2.2 零部件序号标注及明细表程序设计

程序具备如下的功能模块:零部件序号明细关联标注、修改、插入、删除、明细表空行插入、明细表头绘制及分栏、明细和序号对应完整性检查、无序号明细编辑、不带明细序号标注绘制、多序号明细序号补充标注。

2.2.1 独立操作转为关联操作

以前零部件序号引出标注和编辑录入明细两项工作是完全独立分开的, 序号和明细不对应, 漏编序号或漏编明细等低级错误频繁发生, 如果删除或插入序号, 其他序号和明细编号均需手工逐个修改, 不仅速度慢、效率低、劳动强度大, 而且极易漏改而造成错误。把标注和明细通过其附着的扩展数据关联成一个整体操作就解决了以上问题。

2.2.2 插入空行或序号标注及明细

在已经存在的序号标注中插入序号或在明细中插入空行时, 实现关联序号标注和明细自动重排。空行无序号, 为其指定特定序号“9999”。程序设计中实施步骤为:

1) 在图纸的某特定实体记录该图纸明细表总行数;

2) 在序号和明细实体上同时附着“序号”和“行号”, 空行序号为“9999”;

3) 首先获取明细表总行数, 然后获取插入位置行号“X”, 从第X行到总行数的明细表实体在图纸中的逐行移动、“行号”及“序号”扩展数据进行”加1”更新;对序号标注先以“行号”为索引检索到该“行号”对应的“序号”;如果检索到的“序号”不为“9999”, 则以该“序号”为索引检索该“序号”对应的所有标注和明细实体“行号”及“序号”扩展数据进行“加1”更新;如果检索到的“序号”为“9999”, 则以该“序号”为索引检索该“序号”对应的所有标注和明细实体“行号”扩展数据进行“加1”更新, “序号”扩展数据不变。

2.2.3 删除空行或序号标注及明细

在删除某序号时, 同时删除该序号对应的明细。程序设计中实施步骤与“插入空行或序号标注及明细”的方法相同, 不过由原来的“加1”改为“减1”操作。

2.2.4 明细表定位

在进行序号引出标注和明细表关联操作时需要与图框和标题栏绘制配合, 在企业化绘图环境中规划明细表定位信息, 使程序能自动获取插入点。当然也可根据设计人员的重新指定获取自定义插入点。需要对明细表进行分栏时, 根据分栏设置, 使程序完成各分栏明细表的起始定位信息, 完成明细栏的分栏操作。

3 结语

用VBA来操作扩展实体数据完全可以实现零部件序号标注及明细表关联生成, 其操作简单方便。改变以往利用"块"属性存取非图形数据的方式, 仅检索扩展数据各类实体, 就可以实现信息收集和整理, 使得开发Auto CAD与PDM集成接口变得更加便捷, 是实现企业信息化系统技术集成的有效模式, 对制造业企业图纸绘制有一定的借鉴作用和参考应用价值。

参考文献

[1]郭朝勇.AutoCAD R14二次开发技术[M].北京:清华大学出版社, 1999.

VBA二次开发技术论文 篇7

关键词:VBA技术,Excel表格,自动上传,网页

1 引言

为实现教学信息的自动化管理与共享,教师每学期需要录入学生的技能成绩、平时成绩、期末成绩和总评成绩等大量教学信息到教务管理信息系统中。通常,为保存安全和分析方便,经过分阶段和性质而多次收集、汇总和分析的各项成绩,已形成相应的Excel电子文档。由于许多院校的教务管理信息系统没有提供批量导入信息的功能,这就迫使教师将已经整理好的电子资料,再次人工手动录入到相关网页控件,完成成绩重复录入工作[1,2]。其实,利用VBA[3]技术,开发一个小型的配套软件,就能实现了Excel电子成绩的自动快速准确上传。

2 技术要点

下面就以某高校的成绩录入为例,分析利用VBA自动上传学生成绩的技术要点。

2.1 熟悉手工录入操作流程和分析成绩录入页面元素的属性

在编写成绩自动上传代码前,必须熟悉成绩录入页面的结构和人工操作过程。该校成绩录入页面如图1所示。手工操作时有两种方法:(1)根据页面显示的姓名,录入学生的技能、平时、期末和总评成绩,然后点击“添加记录”,该生成绩入库并显示在下面的表格中,直至全班成绩录完无误后提交成绩;(2)可以不管显示的姓名是谁而直接填入学生的学号及各项成绩,再点击“添加记录”而完成一个学生成绩的录入。因为姓名有重复,而学号具有唯一性,所以本程序模仿第二种人工操作过程。

编程时要定位学号及各项成绩等网页元素。为查找网页元素,在进行程序设计之初,可利用“网页按键精灵”或“火狐浏览器”等工具,了解元素节点的id、name和索引号等主要定位属性及类型。例如在火狐浏览器下打开成绩录入页面,右击某元素,点“查看元素”即可查看到该元素的网页源代码,分析获取定位属性和类型。本程序通过name属性定位元素。要操作的网页元素学号、技能、平时、期末、总评和添加记录的name分别为txt Xh、txt Jncj、txt Pscj、txt Qmcj、txt Cj Insert和bt Add。

2.2 查找成绩录入页面的句柄和完成成绩的自动上传

自动上传过程Autoupload()主要有两步,第一步是通过对SHDoc Vw.Shell Windows对象的操作,从打开的IE窗口中找到标题为“成绩录入”的网页,并获得句柄;第二步采用循环结构语句,在网页相应控件分别填入Excel电子表格中的学号及各项成绩,再点击“添加记录”,并等待刷新完成,直至录入结束。

2.3 程序的完善

上述代码能完成成绩自动上传的主要功能,但细节还需要进一步完善。(1)上述程序假设同时选中了“输入平时成绩及期末成绩”和“输入技能成绩”(见图1),如果对某项成绩没有选中,则不需对这类成绩操作,可利用分支结构语句实现本项功能;(2)还可增加操作说明过程和数据检查过程。操作说明过程用于指导老师如何使用本软件,所以只需显示一个提示信息就可。而数据检查过程用于学学号和成绩的正确性检查。一定要保证教务管理信息系统中存在录入的学号,成绩方能入库,8位学号的前四位为入校年份,后4位为编号,很容易用程序判断学号格式的正确性。在各项成绩中,缺考用“-1”标识,考分为0至100分,利用双重循环检查各项成绩是否在此范围。(3)有些网页比较复杂,可能存在隐含表单或框架。若存在框架,my Doc对象只是父框架的HTML,应通过my Doc.frame.“id”来得到操作的表单所在的HTML[4]。

2.4 程序录入和类库的引用

打开Excel,同时按Alt和F11,进入VBA编缉器。点击“插入模块”,在工程的模块1录入操作说明过程、数据检查过程及成绩上传过程Autoupload()。

在此界面下,点工具-引用,分别选中和Microsoft Internet Controls和Microsoft HTML Object Library这两个程序中要引用的控件。

Excel下,制作3个图片按钮,右击按钮,点“指定宏”,分别将不同功能按钮与相应过程关联。上传时,将要上传班级的成绩按规定格式复制到相应位置(A2至G2列),点相应按钮即可。如图2所示。

3 结语

程序经过实际运用,证明速度很快,在数据合法和网络正常的条件下,能在一分钟内将一个班的成绩上传,把教师从简单、枯燥、重复的劳动中解放出来,因而本软件被老师们命名为“秒传”;程序先进行数据检查,再以唯一性标识“学号”为根据上传成绩,保证了成绩录入的正确性;彻底消除为防黑客入侵、教务系统开放时间短暂所造成的教师排队等待计算机录入成绩的现象,节省了管理信息系统的维护成本。当然,VBA也具有良好的扩展性[1],只要掌握数据上传Web系统的技术要点,就能开发适合不同管理信息信息系统的上传程序,彻底解决信息上传“瓶颈”。

参考文献

[1]刘松.一种批量上传Excel数据到Web系统的VBA方法[J].吉林师范大学学报:自然科学版,2012,33(3):68-70.

[2]江治.利用VBA实现网页中自动录入成绩[J].安庆师范学院学报(自然科学版),2010,16(3):124-127.

[3]罗刚君.Excel VBA程序开发自学宝典[M].北京:电子工业出版社,2014.

上一篇:微电影下一篇:温度自动控制装置