VBA集成技术研究_第1页
VBA集成技术研究_第2页
VBA集成技术研究_第3页
VBA集成技术研究_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第25卷第9期计算机应用与软件voll25no.92008年9月computerapplicationsandsoftwaresep.2008vba集成技术研究张晓虎南京工业人学 控制工程中心 江苏南京210009收稿日期:2007-03-01o张晓虎硕士主要从事系统集 成组件及实时数据库等方面的研究与应用工作。摘 要首先介绍了vba产生背景、特性和功能。然后分析了vba的系统结构集成途径重点剖析了vba集成工具 apco 最后讲述在vc6环境下利用apcapplicationprogrammabilitycomponent 集成vba环境的关键步骤并以一个事例说明z。关键词 com ole

2、vba apconvbaintegration2techzhangxiaohucontrollingengineeringcenternanjin guniversityoftechnologynanjing210009jiangsuchinaabstractinthepaperfirstlyitintroducesthegenerationbackgroundofthevbawithitscharactersandfunct ions-thenthesystemstructureofvbaandthewayofintegrationareanalyzedfocusingontheana ly

3、sisofthevbaintegrationtool2apc.intheendthekeypro2cedureofvbaintegrationbyapci nvc6developmentenvironmentisillu strated withanexample. keywordscom olevba applicationprogrammabilitycomponentapco 弓 i 言 vba 对于许多 office 用 户来说并不陌生自从office97问世以来vba已成为标准的开发环境得到了所有 office应用程序的支持。基于该技术任何其他公司可以将vba集成到他们的产品屮 去1

4、=1前全世界已有超过80套软件或系统集成了 vb a技术1例如辅助设计软件 autocad流程绘制软件viso2000以及自动化组态软件ifix和wincc等。但是冃前还 很少见到国内有集成vba技术的软件或系统。熟悉vb的开发者会发现使用vba非 常容易上手因为vba几乎继承了vb的所有特性。除此之外vba真正强人的方面是 它能够被集成到一个宿主程序屮利用vba可以对宿主程序的各个功能进行调用所 以它又是一个完善的二次开发环境目前vba的最新版本是6.4。关于office环境下的 vba应用文章已有很多但是在体会到office中vba强人功能的同时许多开发者都要 问如何在口己开发的程序中集成

5、vba环境并使之具备二次开发功能呢这方面的文 章h前并不是很多忖的是探讨vba的集成途径。1 vba集成途径在讨论vbaz前 首先简要介绍一下vba的技术基础com组件技术。自从windows95操作系统问世以來基于模块化思想微软提出了组件技术历经com/com. ole以及activex发 展过程虽然叫法不同其技术基础还是com3。到了windows2000以后整个操作系统 基木上是由组件来搭建从应用层的呵笔、媒体播放器到内核层的设备驱动程序甚至 数据库驱动程序oledb都被封装成组件。所以windows平台下的开发者不能不对 com组件技术有所了解。具体的com组件技术不是本文的重点。1集

6、成的主耍 工作在集成vba的过程屮一个主耍t作就是将宿主应用程序的各个功能按照com 组件规范进行封装建立一整套组件功能块。vba在宿主程序的进程环境屮利用vb 引擎來控制程序内部的组件功能块或者是外部的应用组件其途径是调用宿主程序眾 館出來的双接口iunknown利dispatch下的属性和功能函数。另一个重要工作就是将vba的开发环境简称ide集成到宿主程序中。vba的ide是一个多文档介面 和vb界面没什么区别它看似与宿主程序分离但实质上通过一系列的钩子与宿主程 序紧密地连接在一起。用户可以方便地在vba的ide和宿主程序之间切换。当宿主 程序关闭时vba的ide也将自动关闭。1.2集成

7、途径集成vba的途径主要有两种: 一种是直接利用vba的核心api另一种是利用apc工具。vba的核心api提供了数据 结构体、常量、错误代码以及多达26个接口。直接利用vba的核心api进行集成工 作量大且比较复朵。apc是微软提供的集成vba的主要工具它屏蔽了核心api的具体细节极人地简化了 vba集成过程而且在使用apc时还町以灵活地调用核心api。 apc充分整合现有的开发环境向开发者提供了mfc类和atl模板类库。除此之外 apc还为vb环境提供了 automation 164计算机应用与软件2008年objects使用这些口动化组件vb的使用者同样能够进行vba的集成工作。2 ap

8、c集 成工具为了进一步说明apc图1给出了apc对象模型结构图。图1 apc对象模型结 构图图1屮每个框中上方的名称为vb对象名下方以t开头的为c接口对象名。主要 对象说明如下:ape:用来提供访问vba宿主程序的途径。它是vba集成屮的主要对 彖。ide:它是vba的集成开发环境如编译、调试等。vbe:vb代码的编辑器。 macrosdialog:个宏列表对话框。列出用户编写的宏。procedure:描述项fl project 中的一个子程序该子程序可以在项冃中的任何位置调用。project:描述一个打开的项 h个项h对应一个文档由项h集文档集来管理。projectitem:描述项h中的一个

9、条 1=1 如台代码模块codemodules> 类模块classmodules。propertieswindow:提供访问vba 丿皿性窗口的途径。另外apc还提供了集合对彖categoriescontrols> in2stances>minibitmaps、proceduresprojectitems> projects> scopes这些集合对彖用丁相应的 对象管理。recorder:提供宏录制功能典型的用途是记录用户的一组操作过程。3实 例在vc6环境卜利用mfc和apc集成vba的主要过程如下:3.1准备工作1安装 vba6.4sdk2设置vc的工程环境

10、变量添加头文件路径c:programfilesvba6sdkinclude 添加库路径c:programfi 1 esvba6sdk 1 ib3创建一单文档工程vbacal0 3.2应用程序层 支持应用程序层需要实现如下几个功能:1管理和显示vba集成开发环境ide即vb环 境界面2暴露应用程序对象即将应用程序类变成组件对象3提供在vba环境和应用 程序主窗口环境z间切换功能并能够正常地关闭vba环境。主要实现步骤如下:1在 预编译头文件中泄义宏。define_appcvbacalcappdefine_doccvbacalcdoc2 在应用程 序头文件中添加usingnamespacemsap

11、c以方便使用apc组件。3创建一idl文件 calc.idl并定义应用程序组件接口及类对象。interfaceidualapplication:idispatchhresultapplicationoutretvalidualapplication33ap plica2tionhresultparentoutretvalidualapplication33parent 返冋父对象 hresultnameoutretvalbstr3pval/ 返向应用程序名hresultvbaversionoutretvalbstr3pval/返回 vba 当前版木 hresultvbeoutretvalidi

12、spatch33vbe/返冋 vbe 扩展对象其它自定义函数coclassapplicationdefaultinterfaceidualapplication4定义一个类 catlapplication 用来实 现纽件接口idualap2plicationo 5修改应用程序类通过模板类capcapplication来继承 catlapplicationo class_app:publiccapcdualdyn3.3 项 h 层支持项忖层是集成过程屮的关键一环因为所有vba代码必须存在于一个项目内一个项目关联一个文 档。每个vba项口包含多个条口如代码模块codemodules、界面forms

13、、类模块 classmodules及外部引references等。当从主程序内保存文档时与其相关联的vba 项目同时得到保存。当从vba的ide中保存文档时主程序文档也得到保存。主要实 现步骤如k:在类库vbacalc内定义文档接口idualdocument及类对象。interfaceidualdocument:idispatchhresultapplicationoutretvalidualapplication33a pplica2tionhresultparentoutretvalidualapplication33 application/ 返回父对象 hresultnameoutre

14、tvalbstr3pval 卜"转第219页2012-05-162012-05-162012-05-162012-05-162012-05-162012-05-16 第9期 罗远等:数字校园数据中心传输的滑动带宽分配设计219returnmsg/向申请源发确认信息5试验结果为验证滑动带宽分配机制能够提高资源利用率对数据中心进行 了模拟测试实验采用两个应用系统的逻辑信道进行模拟:ul、u2其中u1的传输速率 为1u2的信息传输速率为2测试时间为10ms图采用静态分配机制两个信道的宽度 均为1.5图3b采用滑动分配调度每个信道的固定宽度为1滑动宽度为0.4。图3两种 分配模型的测试结果图

15、3a中ul的信道宽度为1.5而实际占用的带宽为lu2的速率为2 而分配得到的带宽为1.5因而出现了 u2阻塞而ul空闲的情况图3b«pul的实际占用带 宽仍为1而空闲的0.4带宽滑动分配给u2u2实际得到的带宽为1.9和比原来的1.5而言 提高了传输效率因而整个带宽利用率得到提高。6结朿语随着数字化校园的建设数 据中心的应用规模越来越庞人而音频、视频等人容量信息的传输给数据中心的网络 带来了很大的压力如何有效提高网络传输的效率就成为一个很大的问题本文在基于 静态带宽分配和动态带宽分配各自的优点的基础上提出了滑动带宽分配的机制和分 配算法有效地避免了静态分配屮的带宽利用率低的问题同时也

16、避免了采用动态分配 所造成的系统负载过大的问题在数字校园的数据中心应用屮取得了良好的效果。参 考文献1某大学数字化校园方案建设书.20063.2ramanvnarangicronechaaslmalaikasmukaitwolfsondbaruc.servicesfor dataaccessanddataprocessingongrids.ggfdocumentgfd.14globalgridforum2003.3b lythejjainsdeelmanegilyvahikmandalakennedyk.taskschedulingstrategiesforworkfl ow2basedapp

17、licationsingridsclustercomputingandthegrid2005.ccgrid2005.ieeeintern a2tionalsymposiumon9212may20052:7592767.4zhaojhassaneinhwujluoj.crma:ac ycle2breakingniulticastroutingalgorithmforsupportingqosovertheinternet.ln:ieeecom2p utersocietyed.proc.ofthe36thannualhawaiiint,lconf.onsystemsciences.ieeepres

18、s2003: 2852293.5yangw.atabu2searchbasedalgorithmforthemulticast2streamsdistri2butionprob lem.computernetworks:theinternationaljournalofcom2puterandtelecommunicationsne tworking2002396:7292747.6paangpronpronpitagsboylerdjemamek.performanceevalua tionoflayeredmulticastcongestioncontrolprotocolsliddlvs

19、.plm.inroc.oflnt'lsymp.o nperformanceevaluationofcomputerandtele2communicationsystems2003._tl64!/l 返回当前文档的名称hresultsave/保存文档其它门定义函数 coclassdocument defaultinterfaceldualdocumentl一类 documentua 并实现idualdocument接口下的函数。2修改文档类通过模板类capcdualdyn来继承 capc2document和接口类document。class_doc:publiccapcdualdyn3.4 实现应用程序类及文档类函数略编辑链接图2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论