APP下载

基于Excel2007 VBA的图片工艺文件程序

2015-09-02吴学政上海阿尔斯通交通设备有限公司上海200245

装备机械 2015年4期
关键词:装配图页面卡片

□吴学政上海阿尔斯通交通设备有限公司 上海 200245

基于Excel2007 VBA的图片工艺文件程序

□吴学政
上海阿尔斯通交通设备有限公司 上海 200245

随着ExcelVBA技术应用的日益普及,尤其是利用Excel作为数据库的便利,使得VBA已经深入到日常生活的各个领域。在松江有轨电车项目制造过程中,受到国外轨道交通图片工艺文件的启发,设计了一款基于ExcelVBA环境的图片工艺文件管理系统,可实现对工艺文件的编制、管理和查看等功能,做到图文并茂,一目了然。

在工业化生产过程中,工艺文件是生产过程中不可缺少的一个重要环节。传统的工艺文件模板单调,缺少有效直观的图片,特别是在当今三维制图技术日益普及的时代,已远远落后时代的发展。在与法国阿尔斯通交通设备有限公司合作过程中,发现其工艺文件图文并茂,简单易懂,使用起来非常方便。受到其启发,萌发了利用Excel VBA设计图片工艺文件的想法,重点是要充分考虑程序的可操作性及维护性,为工业化生产提供一种实用的工艺文件管理模式。

本程序在配备Office 2007以上版本的计算机均可实用,在Excel环境下,利用VBA二次编写程序,只要工艺师把工艺文件的基本信息和工艺步骤编写出来,并把图片和步骤一一对应起来,即可通过软件实现图片式工艺文件,从而提高工作效率。

1 使用平台及开发工具的选择

Excel是Microsoft Office家族成员,它不仅提供了强大的计算功能和表格功能,还提供宏语言Visual Basic for Application(VBA)。本程序编制是利用Excel内嵌的编程语言,将人们熟悉的Office产品界面、操作习惯,通过编程来实现软件的可视化,从而发挥其更强大的功能。

1.1 VBA语言的特点

(1)Excel本身功能强大,sheet页面可直接作为数据库,调用数据非常方便,且编写出来的程序功能多样,占用内存非常小。

(2)无需考虑运行环境,因为当今大家使用Office是普遍应用的软件。

(3)Excel界面简单,为大家熟悉,便于使用。

(4)当出现错误,退出重新打开即可。

1.2 支持平台及开发工具

本程序所用的编程语言是Excel VBA,运行环境为Windows XP,只要安装Microsoft Office2007即可。

1.3 对设计软件的要求

(1)操作简单,界面友好,完全控件式页面布局,使文件管理工作更简单。

(2)即时可见,对文件内容的修改,即刻在软件对应部分显示出来,达到即时见效的功能。

(3)功能完善,功能可根据自己的需求进行添加,能实现对工艺文件目录和文件管理,并可打印出纸质文件使用和存档。

2 宏的设置和填写信息

首先是宏的设置,然后填写工艺文件的信息和编制工艺步骤。

2.1 宏的设置

(1)打开Excel点击左上角按钮,点击Excel选项,如图1所示。

(2)在功能区显示“开发工具”选项卡上勾选,如图2所示。

(3)打开“开发工具”中的“宏安全性”,选择图3所示功能。

2.2 工艺文件信息

工艺文件应具有工艺文件编号、版本、名称等信息,具体根据各企业自定,这些内容工艺人员应填写完整。

工艺文件编号和样板可根据JB/Z187.2工艺文件完整性[1]和JB/Z187.3工艺规程格式[2]来编写,也可根据企业自己标准来定。

图1 点击Excel选项

图2 勾选开发工具选项

图3 宏设置

工艺文件的编号应能反映出组和类的信息,表1是针对轨道交通车辆工艺文件的分类表,仅供参考。

2.3 工艺文件步骤

工艺文件信息填写完整后,应编制工艺步骤,步骤编写完成后,即可通过软件调用该工艺文件。

3 软件的详细设计和代码

3.1 按钮设置

打开需要添加按钮的页面,点击“开发工具”→点击“插入”→选择按钮命令,如图4所示。

按钮名称的修改:双击出现的按钮,出现VB界面,更改按钮Caption内容,改成自己需要的按钮名称,如图5所示。

表1 工艺文件分类表

图4 添加按钮

图5 按钮名称修改

3.2 封面设计

封面设计应变化多姿,尽量采用图片和按钮来设计,确保设计出来的封面丰富多彩,封面如图6所示。

图6 工艺文件封面

封面设计好后,应确保Excel工作簿打开后进入该页面,其代码如下[3]:

Private Sub Workbook_Open()

Sheets("封面").Select

End Sub

3.3 工艺文件编号

(1)点击封面进入按钮,进入“组装文件编号”页面,如图7所示。代码为:

Private Sub CommandButton10_Click()

Sheets("组装文件编号").Select

End Sub

点击第二列工艺文件编号,再点击打开文件按钮,即可进入“组装卡片”页面。

(2)点击第二列文件编号后,该文件的信息在该页面上显示,它是用于在“组装过程”页面搜寻符合条件的工艺文件内容。代码为[4]:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dimk

IfTarget.Column>5 500 Then

Exit Sub

ElseIfTarget.Column=2 Then

k=14

Target.CopyCells(k,14)

Sheets("组装文件编号").Cells(15,14)=Target.Row'把工艺文件编号输入到单元格

图7 工艺文件编号

End If

Dimi,d,B,C

d=Sheets("组装文件编号").Cells(15,14)'根据工艺文件编号查询其他内容

For i=1 To200

Ifi=d Then

B=Sheets("组装文件编号").Cells(i,3)

C=Sheets("组装文件编号").Cells(i,7)

End If

Next

Sheets("组装文件编号").Cells(16,14)=B'版本

Sheets("组装文件编号").Cells(17,14)=C'页数

End Sub

该代码运行后,文件编号、所在行、版本、页码等信息会在页面第14列显示,如图8所示。

图8 工艺文件信息图9 传送到“组装卡片”页面上工艺文件的信息

(3)点击“打开文件”按钮后,进入“组装卡片”页面。

Private Sub CommandButton1_Click()

Sheets("组装卡片").Select

Sheets("组装卡片").Cells(1,30)=Sheets("组装文件编号"). Cells(14,14)'文件编号

Sheets("组装卡片").Cells(2,30)=Sheets("组装文件编号"). Cells(16,14)'版本

Sheets("组装卡片").Cells(3,30)=Sheets("组装文件编号"). Cells(17,14)'页数

End Sub

代码运行后,文件编号、版本、页码等信息传送到“组装卡片”的第30列,如图9所示。

图8 工艺文件信息图9 传送到“组装卡片”页面上工艺文件的信息

3.4 组装过程

“组装过程”页面作为一个数据库,VBA可直接从中调用数据,用于存放工艺文件的步骤,如图10所示。

图10 工艺文件步骤

内容分为:①零件信息,包括:A列为序号,序号总数和页码相等;B列为零件在装配图中序号;C列为零件物料号;D列为零件的数量;E列为零件名称;F列为零件的材料;G列为零件的图号;H列为零件版本。②装配图信息,包括:R列为装配图物料号:XXXX;S列为装配图名称:XXXX;T列为装配图图号:XXXX;U列为装配图版本:XXXX。③工艺文件信息,包括:I列为工艺文件页数;J列为工艺文件编号;K列为工艺文件版本;L列为工步号,用数字表示;N列为图1,零件的远图;O列为图2,零件的近图;P列为图3,零件图纸尺寸截图;Q列为工序内容,该工序操作内容。

图片放在以工艺文件编号的文件夹里,以上信息需要工艺人员编写,同时把相应的图片放在相应的文件夹内。步骤编制完后,在“组装卡片”页面即可查看工艺文件。

3.5 组装卡片

点击3.3打开文件按钮后进入“组装卡片”页面,如图11所示。

组装卡片页面介绍:1区为装配图纸信息,如图12所示。2区为工艺文件信息、操作按钮、页码、装配图版本和查看序号输入等信息,如图13所示。3区为工步号和工序内容,如图14所示。4区为零件信息,如图15所示。5区为图片显示,3个图片分别为:image1控件、image2控件、image3控件,如图16所示。

图11 组装卡片页面

图12 装配图信息

图13 工艺文件等信息

图14 工步号和工序内容信息

图15 零件信息

按钮使用介绍。

(1)“刷新”按钮。点击“刷新”按钮后,会显示图片9所示的工艺文件编号的工艺文件的第一页。

其代码为[5]:

Private Sub CommandButton1_Click()

'清空文件内容

Sheets("组装卡片").Range("v3")=""

Sheets("组装卡片").Range("k23")=""

Sheets("组装卡片").Range("l23")=""

Sheets("组装卡片").Range("o23")=""

Sheets("组装卡片").Range("p23")=""

Sheets("组装卡片").Range("v23")=""

Sheets("组装卡片").Range("t23")=""

Sheets("组装卡片").Range("x23")=""

Sheets("组装卡片").Range("w3")=""

Sheets("组装卡片").Range("p3")=""

Sheets("组装卡片").Range("p1")=""

Sheets("组装卡片").Range("b22")=""

图16 图片显示

Sheets("组装卡片").Range("e22")=""

Sheets("组装卡片").Range("e3")=""

Sheets("组装卡片").Range("e1")=""

Sheets("组装卡片").Range("j3")=""

Sheets("组装卡片").Range("x3")=""

Sheets("组装卡片").Cells(4,30)=1000

Sheets("组装卡片").Cells(5,30)=2000

Sheets("组装卡片").Cells(6,30)=3000

DimA,B,C,d,i

A=Sheets("组装卡片").Cells(4,30)'设置第image1控件第1张图片

B=Sheets("组装卡片").Cells(5,30)'设置第image2控件第1张图片

C=Sheets("组装卡片").Cells(6,30)'设置第image3控件第1张图片

d=Sheets("组装卡片").Cells(1,30)'提取工艺文件编号

'打开图片

Image1.Picture=LoadPicture("d:有轨电车车制作过程图片" &d&""&A&".bmp")

Image2.Picture=LoadPicture("d:有轨电车车制作过程图片" &d&""&B&".bmp")

Image3.Picture=LoadPicture("d:有轨电车车制作过程图片" &d&""&C&".bmp")

For i=2 To5000

'按工艺文件编号和版本号调用数据

If Sheets("组装过程").Cells(i,1)=1 And Sheets("组装过程"). Cells(i,10)=Sheets("组装卡片").Cells(1,30)

And Sheets("组装过程").Cells(i,11)=Sheets("组装卡片"). Cells(2,30)Then

Sheets("组装卡片").Range("v3")=Sheets("组装过程").Cells(i,1)

Sheets("组装卡片").Range("k23")=Sheets("组装过程").Cells(i,2)

Sheets("组装卡片").Range("l23")=Sheets("组装过程").Cells(i,3)

Sheets("组装卡片").Range("o23")=Sheets("组装过程").Cells(i,4)

Sheets("组装卡片").Range("p23")=Sheets("组装过程").Cells(i,5)

Sheets("组装卡片").Range("v23")=Sheets("组装过程").Cells(i,6)

Sheets("组装卡片").Range("t23")=Sheets("组装过程").Cells(i,7)

Sheets("组装卡片").Range("x23")=Sheets("组装过程").Cells(i,8)

Sheets("组装卡片").Range("w3")=Sheets("组装过程").Cells(i,9)

Sheets("组装卡片").Range("p3")=Sheets("组装过程").Cells(i,11)

Sheets("组装卡片").Range("p1")=Sheets("组装过程").Cells(i,10)

Sheets("组装卡片").Range("b22")=Sheets("组装过程").Cells(i,12)

Sheets("组装卡片").Range("e22")=Sheets("组装过程").Cells(i,17)

Sheets("组装卡片").Range("e3")=Sheets("组装过程").Cells(i,18)

Sheets("组装卡片").Range("e1")=Sheets("组装过程").Cells(i,19)

Sheets("组装卡片").Range("j3")=Sheets("组装过程").Cells(i,20)

Sheets("组装卡片").Range("x3")=Sheets("组装过程").Cells(i,21)

e=Sheets("组装过程").Cells(i,1)

End If

Next

Sheets("组装卡片").Cells(7,30)=e

End Sub

(2)“上一页”按钮,其代码为:

Private Sub CommandButton2_Click()

DimA,B,C,d,e,i

A=Sheets("组装卡片").Cells(7,30)

IfA=1 Then MsgBox"已到第一步":Exit Sub'A=1提示到第一步

A=A-1'A递减1

For i=2 To5000

'按工艺文件编号、图片编号和版本号调用数据

If Sheets("组装过程").Cells(i,1)=A And Sheets("组装过程"). Cells(i,10)=Sheets("组装卡片").Cells(1,30)And Sheets("组装过程").Cells(i,11)=Sheets("组装卡片").Cells(2,30)Then

Sheets("组装卡片").Range("v3")=Sheets("组装过程").Cells(i,1)

Sheets("组装卡片").Range("k23")=Sheets("组装过程").Cells(i,2)

Sheets("组装卡片").Range("l23")=Sheets("组装过程").Cells(i,3)

Sheets("组装卡片").Range("o23")=Sheets("组装过程").Cells(i,4)

Sheets("组装卡片").Range("p23")=Sheets("组装过程").Cells(i,5)

Sheets("组装卡片").Range("v23")=Sheets("组装过程").Cells(i,6)

Sheets("组装卡片").Range("t23")=Sheets("组装过程").Cells(i,7)

Sheets("组装卡片").Range("x23")=Sheets("组装过程").Cells(i,8)

Sheets("组装卡片").Range("w3")=Sheets("组装过程").Cells(i,9)

Sheets("组装卡片").Range("p3")=Sheets("组装过程").Cells(i,11)

Sheets("组装卡片").Range("p1")=Sheets("组装过程").Cells(i,10)

Sheets("组装卡片").Range("b22")=Sheets("组装过程").Cells(i,12)

Sheets("组装卡片").Range("e22")=Sheets("组装过程").Cells(i,17)

Sheets("组装卡片").Range("e3")=Sheets("组装过程").Cells(i,18)

Sheets("组装卡片").Range("e1")=Sheets("组装过程").Cells(i,19)

Sheets("组装卡片").Range("j3")=Sheets("组装过程").Cells(i,20)

Sheets("组装卡片").Range("x3")=Sheets("组装过程").Cells(i,21)

B=Sheets("组装过程").Cells(i,14)

C=Sheets("组装过程").Cells(i,15)

d=Sheets("组装过程").Cells(i,16)

End If

Next

e=Sheets("组装卡片").Cells(1,30)

Image1.Picture=LoadPicture("d:有轨电车车制作过程图片" &e&""&B&".bmp")

Image2.Picture=LoadPicture("d:有轨电车车制作过程图片" &e&""&C&".bmp")

Image3.Picture=LoadPicture("d:有轨电车车制作过程图片" &e&""&d&".bmp")

Sheets("组装卡片").Cells(7,30)=A

Sheets("组装卡片").Cells(4,30)=B

Sheets("组装卡片").Cells(5,30)=C

Sheets("组装卡片").Cells(6,30)=d

End Sub

(3)“下一页”按钮,其代码为:

Private Sub CommandButton3_Click()

DimA,B,C,d,e,i

A=Sheets("组装卡片").Cells(7,30)

IfA=Sheets("组装卡片").Cells(3,30)Then MsgBox"已到最后一步":Exit Sub'到文件页码即为最后一步。

A=A+1'A递增1

For i=2 To5000

If Sheets("组装过程").Cells(i,1)=A And Sheets("组装过程"). Cells(i,10)=Sheets("组装卡片").Cells(1,30)And Sheets("组装过程").Cells(i,11)=Sheets("组装卡片").Cells(2,30)Then

Sheets("组装卡片").Range("v3")=Sheets("组装过程").Cells(i,1)

Sheets("组装卡片").Range("k23")=Sheets("组装过程").Cells(i,2)

Sheets("组装卡片").Range("l23")=Sheets("组装过程").Cells(i,3)

Sheets("组装卡片").Range("o23")=Sheets("组装过程").Cells(i,4)

Sheets("组装卡片").Range("p23")=Sheets("组装过程").Cells(i,5)

Sheets("组装卡片").Range("v23")=Sheets("组装过程").Cells(i,6)

Sheets("组装卡片").Range("t23")=Sheets("组装过程").Cells(i,7)

Sheets("组装卡片").Range("x23")=Sheets("组装过程").Cells(i,8)

Sheets("组装卡片").Range("w3")=Sheets("组装过程").Cells(i,9)

Sheets("组装卡片").Range("p3")=Sheets("组装过程").Cells(i,11)

Sheets("组装卡片").Range("p1")=Sheets("组装过程").Cells(i,10)

Sheets("组装卡片").Range("b22")=Sheets("组装过程").Cells(i,12)

Sheets("组装卡片").Range("e22")=Sheets("组装过程").Cells(i,17)

Sheets("组装卡片").Range("e3")=Sheets("组装过程").Cells(i,18)

Sheets("组装卡片").Range("e1")=Sheets("组装过程").Cells(i,19)

Sheets("组装卡片").Range("j3")=Sheets("组装过程").Cells(i,20)

Sheets("组装卡片").Range("x3")=Sheets("组装过程").Cells(i,21)

B=Sheets("组装过程").Cells(i,14)

C=Sheets("组装过程").Cells(i,15)

d=Sheets("组装过程").Cells(i,16)

End If

Next

e=Sheets("组装卡片").Cells(1,30)

Image1.Picture=LoadPicture("d:有轨电车车制作过程图片" &e&""&B&".bmp")

Image2.Picture=LoadPicture("d:有轨电车车制作过程图片" &e&""&C&".bmp")

Image3.Picture=LoadPicture("d:有轨电车车制作过程图片" &e&""&d&".bmp")

Sheets("组装卡片").Cells(7,30)=A

Sheets("组装卡片").Cells(4,30)=B

Sheets("组装卡片").Cells(5,30)=C

Sheets("组装卡片").Cells(6,30)=d

End Sub

Private Sub CommandButton4_Click()

End Sub

3.6 工艺文件内容修改

当发生内容修改时,可直接在“组装过程”页面对步骤进行修改,对应的图片也应作相应的改动。

4 结论

该程序实现了以人为本的思想,用最简单的软件实现所需的功能,操作页面简单,各区域及功能一目了然,无需任何培训都会使用。同时对程序进行了反复试验,确保了在使用时不会出现任何差错。

本程序的编写,希望能起到一个抛砖引玉的作用,得到广大工艺人员和VBA爱好者的关注,共同来把工艺文件设计得更加完善和至美。

[1]JB/T9165.1-1998工艺文件完整性[S].

[2] JB/T9165.2-1998工艺规程格式[S].

[3]John Green,Stephen Bullen,Rob Bovey,et al.Excel Home 译.Excel2007 VBA参考大全[M].北京:人民邮电出版社,2009.

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

[5]钟声,李远详,郑开敏.Excel2007 VBA入门与提高实例大全[M].北京:电脑报电子音像出版社,2009.

Along with the growing popularity of technical application of Excel VBA,especially the convenience in use of Excel database,VBA has got down to all areas of daily life.Inspired by illustrated technological documents of foreign rail during the manufacturing process of Songjiang trolley car project,we designed a management system for image technological documents based on Excel VBA environment that could realize the functions to establish,manage,check and viewthe process documentation,all texts and illustrations are clear at a glance.

ExcelVBA;图片工艺文件;设计

ExcelVBA;Illustrated TechnologicalDocuments;Design

TP317

B

1672-0555(2015)04-018-07

2015年8月

吴学政(1966-),男,本科,高级工程师,主要从事轨道交通车辆车体结构的设计

猜你喜欢

装配图页面卡片
刷新生活的页面
实物模型拼装、图块拼接与AUTO CAD软件在装配图绘制中的有机结合
摆卡片
倒过来的卡片
答案
让Word同时拥有横向页和纵向页
一张卡片
工程制图小班化教学的实践与探索
普通CA6140车床的经济型数控化改造设计
AutoCAD绘制装配图技巧初探