引言
在进行CAPP项目开发时,最终要生成多种工艺卡片。由于VB具有极强的界面设计能力,且易学易用,支持面向对象、事件驱动、ActiveX技术以及强大的数据库处理能力,很多用户喜欢用VB作为CAPP项目的开发语言。但VB的表格处理能力一般,特别是处理复杂表格时,显得力不从心。而Excel作为Micro sof t公司的表格处理软件有着强大的功能。为此,在充分利用VB诸多优点的基础上,结合Excel的表格处理能力,成功解决了CAPP项目开发中复杂表格生成这一难题。
1 解决问题的思路与方法
首先利用VB强大的界面设计能力,在其开发环境下用Label(标签)、Textbox(文本框)、Ole(用于嵌入图片)、MSFlexGrid(网格)等控件“画出”一张空白卡片,这张卡片是由各种控件组成的,可充分利用基于VB的CAPP系统强大的功能,进行卡片内容的快速填充和编辑,生成内容上完全符合实际需要的“准工艺卡”。由于其不是真正意义上的表格,而且目的在于利用CAPP系统强大功能进行快速生成,所以并不适用于打印输出和实际生产。
利用Excel强大的表格处理功能,根据需要事先设计出各种实用的空白工艺卡片模版,其表格组成应与VB环境下对应的表格完全相同。实际使用时,只需调用需要的卡片模版,然后将CAPP系统生成的工艺表格中相关控件的内容传入Excel表格对应的单元格,即可生成真正意义上的工艺卡片。
2 VB中各控件内容向Excel表格中的传送
由于Excel应用程序是外部可创建对象,所以能从VB应用程序内部来程序化操作Excel,方法是利用VB的OLE自动化技术获取Excel的控制句柄,从而通过VB直接控制Excel的各种操作。由于对Excel的操作都是在VB的主界面下进行的,用户感觉就像使用VB自己的表格一样,十分方便。
2.1 利用VB启动Excel并打开对应的工作薄和表
a.在工程中引用Micro sof t Excel类型库。从VB的“工程”菜单中选择“引用”栏,选中Micro sof tExcel 11.0 Object Library(Excel 2003),然后单击“确定”,表示在工程中引用Excel类型库。
b.在通用对象的声明过程中定义Excel对象。
Dim ExApp A s Excel Applicatio n
Dim ExBoo k A s Excel Wo rkBoo k
Dim ExSheet A s Excel Wo rksheet
c.在程序中打开已经存在的Excel工件簿文件并设置活动工作表。
Set ExApp=CreateObject("Excel.Applica2tio n")’创建Excel对象
Set ExBoo k=ExApp.Wo rkboo ks.Open("Excel工艺模版文件名")’打开工件簿文件
ExApp.Visible=True’设置Excel对象可见
Set ExSheet=ExBoo k.Wo rksheet s("表名")’设置活动工作表
2.2 MSFlex Grid的文本向Excel单元格的传送
在CAPP项目开发中,工艺卡片中的主要内容是文本和图形。其中,VB环境下的文本内容主要存于文本框和MSFlexGrid网格控件中,其中又以MSFlex Grid网格控件为主。下面以VB的MS2Flex Grid网格控件向Excel单元格传送文本为例,介绍通用的程序代码。
以下代码将MSFlexGrid1网格控件第1行、第1列至第1行、第4列的内容传送到Excel表的“e1”~“h1”的单元格中。i=1
Fo r j=101 To 104‘101~104为字母e~h的
A SCII码值
r=Chr(j)&i
ExSheet.Range(r).Value=MSFlex Grid1.
Text Mat rix(i,j-100)
Next j
2.3 VB中的图形向Excel单元格的传送
在CAPP项目中所使用的各种工艺图形,均以文件的形式进行保存,本文使用的图形文件为Au2to CAD的dwg文件。若用变量Pict ure_name表示工艺卡片中插入的图形文件名(含路径),则可利用工作表的OLEObjects对象的Add方法,将此图形文件插入到Excel表格的某一单元格(如"a7")中,具体代码如下:
ExSheet.Range("a7").Activate
ExSheet.OL EObject s.Add(FileName:=Pic2
t ure_name,Link:=Fal se).Select
需要说明的是,插入到Excel表格中的图形大小,可能与Excel模版中设定的图形区域不一致,可以在预览时(此时可通过代码自动打开所生成的Excel工艺卡片)进行如下调整:选中卡片中插入的图形;单击右键,在快捷菜单中选择“显示‘图片’工具栏”;利用图片工具栏中的“裁剪”和“压缩图片”按钮,将图片调整到合适尺寸。
2.4 已生成的Excel工艺表格的保存
以下代码将已生成的Excel工艺表格以文件的形式保存起来,供预览、打印及实际生产之用,并关闭Excel以及相应的工作薄和工作表。
Exapp.DisplayAlert s=Fal se
Exbook.SaveA s("生成的Excel工艺表格文件名")
Exbook.Close
Exapp.DisplayAlert s=True
Set Exboo k=Not hing
Set ExSheet=Not hing
Set Exapp=Not hing
3 预览及打印功能的实现
在VB环境下,利用OLE容器控件,调用Cre2ateLink方法可以在运行时从已生成的工艺卡片文件中创建一个链接对象[1],从而方便地打开已生成的Excel工艺表格,实现预览及打印,方法如下:在VB下建立一窗体(Name属性设置为Frm Excel),在其上放置一OL E控件(Name属性设置为Ole1),然后在预览及打印菜单的相应事件过程中编写下列代码。
Frm Excel.Ole1.CreateLink"生成的Excel工艺卡片文件名"
Frm Excel.Ole1.DoVerb‘运行时激活对象
4 结束语
通过VB和Excel的有机结合,充分发挥各自软件的优势和特色,使编程更加简练、实用,使复杂的表格处理更加简便。对于表格中的图形处理,由于采用了OLE技术,故表格中既可以插入常用的AutoCAD图形文件,也可以插入Pro2E,SoldWorkS等图形文件,使用户对图形软件的选择处于完全开放的状态,极大地方便了用户。(end)
|