论文部分内容阅读
摘要:航空维修工艺规程更改、变更和修订过程繁琐、环节较多,人为影响因素也较多,容易出现勘误性错误。本文提出的基于VBA编程的一键标准化方法在工艺规程更改检查中的应用,能够大大提高工作效率,杜绝部分勘误性错误,可实现标准化检查的自动化。
关键词:VBA编程;工艺规程更改单;一键标准化;研究
Keywords:VBA programming;process change list;one key standardization;study
0 引言
航空维修工厂的工艺规程更改有其严肃性和规范性。在办理工艺规程更改单时,需按照厂内程序文件要求的表格样式、字体、段落进行。目前,各工厂通常采用人工设定、人工自查、人工审核方式进行标准化工作,费时费力。当内容较多、时间紧张时,易发生各种标准化错误和勘误性错误,签审时如发现一处标准化错误,将至少增加三人的签审工作,严重影响签审效率,个别内容错误还会影响产品质量。
以上情况发生的原因是编写过程中所需处理的信息除技术要求外还要兼顾格式,往往顾此失彼,该问题已成为技术文件更改单编写质量提升的瓶颈。据统计,2017年我厂共办理12000多份更改单,每份更改单按10min计算总标审时间,技术人员共需花费250个工作日在重复性的标审工作上。因此,采用计算机程序方式解决标准化问题意义重大,不仅能够提高工作效率,而且能将技术员的生产力从简单重复性工作中解放出来,集中精神处理技术要求问题。
1 VBA语言
Visual Basic for Application(VBA)是Microsoft Office组件安装时默认安装的一种宏编辑语言。为方便嵌入和保存,编程所用的更改单模板文档需选用后缀为.doc格式的文件。
2 标准化工作内容分析及解决途径
根据日常工作情况,标准化工作包含以下内容:
1)检查序号。VBA程序可完成序号的自动填充,防止序号错误。
2)检查字体、段落格式。VBA程序可在遍历过程中自动设置格式。例如,内容部分所有字体设置为小四宋体(其中数字为新罗马字体),不倾斜、不加粗,颜色为黑色,取消突出显示颜色;1.5倍行距;更改内容部分段落靠左,序号和页次段落居中,等等。
3)检查是否存在漏写信息。VBA程序可检查“工艺更改换页单位(班组)”情况及其他表格的内容,如为空,则以批注方式进行标识。
4)检查更改前后划线情况。VBA程序将对部分不正确内容以批注方式进行提示,减少因划线不正确导致的更改误读。
5)检查更改单编号与机型、更改文件的对应情况。VBA程序通过对更改单号进行提取,对机型和更改文件进行比对。
3 工艺规程更改单及一键标准化插件架构
工艺规程更改单如图1所示,分为填写栏和签审栏两部分,填写栏用以明確更改的对象、内容、关联内容等要求,由更改编订人完成;签审栏根据分工,按照层层把关的原则,对更改内容进行检查,如发现问题,按照流程,更改单将被直接退回编订人处。
在VBA语言中,更改单将被识别为一个Tables对象,表格中每一个格内的内容由Tables对象下的Cell对象代表,具体的文字对象由Cell对象下的Range对象代表。对更改单的标准化就是对Tables对象下所有Range对象的遍历和处理过程。主要程序架构由右键程序接口设计、表格遍历处理、特殊情况处理三部分组成。
3.1 设置右键程序接口
在This document对象下采用Document_Open事件,使其在打开Word文档时自动完成右键菜单的注入工作。主要代码如下:
新建名称为“更改单标准化”的主函数,进行以下工作:
1)确定更改内容所在行的范围。根据更改单格式情况,开始位置为第2行,结束位置可以“关联技术文件”为锚定字,找到该位置即退出行的循环。遍历过程中需采用 “On Error Go To未找到”的方式预防可能出现的程序溢出。
2)建立两个三维数组。将表格栏“更改前”和“更改后”内容读入数组,数组中含有所在行的行数、拆分后的每个字、每个字的划线情况。为保证数组数据免于溢出,应提前获取表格栏“更改前”和“更改后”中最长字符串的长度。
3)表格遍历。以行和列数进行表格遍历,遍历过程中,对于第一列内容,自动填入行号,实现“序号”内容填充的100%正确性。对其他列,采用以下代码去除表格内文字尾部的换行符和制表符:
zfc = Mid(zfc,1,Len(zfc)– 2)
同时,对字符串进行处理。首先删除空格、全角空格内容,以判断表格内容是否为空,如果为空则以批注的方式进行标识,代码如下:
然后,对每个字进行遍历,获取其划线情况,将其读入到两个三维数组中。识别过程中,空格、换行符等也应识别为特殊的划线情况。主要代码如下:
5)遍历过程中的划线情况比对。比对函数较为复杂,程序主要逻辑如下: 首先对字符情况进行整合,以空格、换行符、划线情况为分隔点,将字符下有划线的连到一起,无划线也连到一起,形成数组。之后采用以下逻辑识别错误标识:①针对删除内容的比对。逻辑为:更改前删除的内容,更改后不应出现,但如果出现(两个位置仅删除一个时),为防止误报警,要求其位置所在处的前一部分内容或后一部分内容至少有一个相同。②针对更改内容的比对。逻辑为:若实际未更改,则前位置内容或后位置内容加它一定出现在更改前的内容里,则标识为划线错误。③针对增加内容的比对。逻辑为:不划线的更改后内容一定在更改前内容中,若不满足则标识为划线错误。④若更改前与更改后内容相同,则标识为划线错误。
之后对获取的更改单编号进行分析,同样采用正则表达式,获取其中的机型和工艺规程编号信息,与更改单文档中固定位置的数据进行比对,如不一致,以批注的方式进行标识。
3.3 特殊情况的处理
1)中括号“[]”。在VBA语言中中括号有特殊含义,为防止出错必须在文字读入前进行替换,问题输出时再换回。
2)省略号“…”。在新罗马字体下显示效果与宋体显示效果不同,可在统一设置后再单独设置为宋体,可采用Selection.Find函数进行查找并获取字符位置t,并采用以下代码设置字体:
4 基于VBA编程的工艺规程更改单一键标准化方法应用
在表格中右键点击,选择“更改单标准化”并点击,即可运行程序,运行完毕后若有问题,则显示为批注。按照批注内容更改完毕后可再次检查,确认无问题即可提交流程。该插件程序可作为模板嵌入到PDM系统中,使每个编辑人员均可享用一键标准化的便利。另外,程序设置了“删除所有批注”的选项,便于错误批注校对时使用,如图2所示。
以上标准化过程所花费时间平均不超过10s,大幅节约了人工编写时间,且可在序号栏、型号栏等内容填写方面做到100%的错误避免。插件程序自在工厂上线运行以来,大大降低了更改单标准化的学习成本和工作時间,并以其快速、准确、可信的特点,逐步成为技术人员编写更改单过程中的必备。
5 结束语
办公自动化软件因定制化程度较高而难以推广,本文提供了一种新的解决途径,即根据工作习惯,在深入了解数据模型后自行编制符合工作要求的软件。在以新技术、新设备、新应用为代表的航空维修单位的变革过程中,随着技术文件标准化、规范化要求的不断加深和提高,VBA编程语言将发挥越来越大的作用。
参考文献
[1] Excel Home编著.别怕,Excel VBA其实很简单[M].北京:北京大学出版社,2016.
[2] Excel Home编著. Excel 2010 VBA实战技巧精粹[M].北京:人民邮电出版社,2015.
作者简介
张康华,工程师,主要从事发动机附件修理技术研究。
杨武奎,工程师,主要从事发动机附件修理技术研究。
关键词:VBA编程;工艺规程更改单;一键标准化;研究
Keywords:VBA programming;process change list;one key standardization;study
0 引言
航空维修工厂的工艺规程更改有其严肃性和规范性。在办理工艺规程更改单时,需按照厂内程序文件要求的表格样式、字体、段落进行。目前,各工厂通常采用人工设定、人工自查、人工审核方式进行标准化工作,费时费力。当内容较多、时间紧张时,易发生各种标准化错误和勘误性错误,签审时如发现一处标准化错误,将至少增加三人的签审工作,严重影响签审效率,个别内容错误还会影响产品质量。
以上情况发生的原因是编写过程中所需处理的信息除技术要求外还要兼顾格式,往往顾此失彼,该问题已成为技术文件更改单编写质量提升的瓶颈。据统计,2017年我厂共办理12000多份更改单,每份更改单按10min计算总标审时间,技术人员共需花费250个工作日在重复性的标审工作上。因此,采用计算机程序方式解决标准化问题意义重大,不仅能够提高工作效率,而且能将技术员的生产力从简单重复性工作中解放出来,集中精神处理技术要求问题。
1 VBA语言
Visual Basic for Application(VBA)是Microsoft Office组件安装时默认安装的一种宏编辑语言。为方便嵌入和保存,编程所用的更改单模板文档需选用后缀为.doc格式的文件。
2 标准化工作内容分析及解决途径
根据日常工作情况,标准化工作包含以下内容:
1)检查序号。VBA程序可完成序号的自动填充,防止序号错误。
2)检查字体、段落格式。VBA程序可在遍历过程中自动设置格式。例如,内容部分所有字体设置为小四宋体(其中数字为新罗马字体),不倾斜、不加粗,颜色为黑色,取消突出显示颜色;1.5倍行距;更改内容部分段落靠左,序号和页次段落居中,等等。
3)检查是否存在漏写信息。VBA程序可检查“工艺更改换页单位(班组)”情况及其他表格的内容,如为空,则以批注方式进行标识。
4)检查更改前后划线情况。VBA程序将对部分不正确内容以批注方式进行提示,减少因划线不正确导致的更改误读。
5)检查更改单编号与机型、更改文件的对应情况。VBA程序通过对更改单号进行提取,对机型和更改文件进行比对。
3 工艺规程更改单及一键标准化插件架构
工艺规程更改单如图1所示,分为填写栏和签审栏两部分,填写栏用以明確更改的对象、内容、关联内容等要求,由更改编订人完成;签审栏根据分工,按照层层把关的原则,对更改内容进行检查,如发现问题,按照流程,更改单将被直接退回编订人处。
在VBA语言中,更改单将被识别为一个Tables对象,表格中每一个格内的内容由Tables对象下的Cell对象代表,具体的文字对象由Cell对象下的Range对象代表。对更改单的标准化就是对Tables对象下所有Range对象的遍历和处理过程。主要程序架构由右键程序接口设计、表格遍历处理、特殊情况处理三部分组成。
3.1 设置右键程序接口
在This document对象下采用Document_Open事件,使其在打开Word文档时自动完成右键菜单的注入工作。主要代码如下:
新建名称为“更改单标准化”的主函数,进行以下工作:
1)确定更改内容所在行的范围。根据更改单格式情况,开始位置为第2行,结束位置可以“关联技术文件”为锚定字,找到该位置即退出行的循环。遍历过程中需采用 “On Error Go To未找到”的方式预防可能出现的程序溢出。
2)建立两个三维数组。将表格栏“更改前”和“更改后”内容读入数组,数组中含有所在行的行数、拆分后的每个字、每个字的划线情况。为保证数组数据免于溢出,应提前获取表格栏“更改前”和“更改后”中最长字符串的长度。
3)表格遍历。以行和列数进行表格遍历,遍历过程中,对于第一列内容,自动填入行号,实现“序号”内容填充的100%正确性。对其他列,采用以下代码去除表格内文字尾部的换行符和制表符:
zfc = Mid(zfc,1,Len(zfc)– 2)
同时,对字符串进行处理。首先删除空格、全角空格内容,以判断表格内容是否为空,如果为空则以批注的方式进行标识,代码如下:
然后,对每个字进行遍历,获取其划线情况,将其读入到两个三维数组中。识别过程中,空格、换行符等也应识别为特殊的划线情况。主要代码如下:
5)遍历过程中的划线情况比对。比对函数较为复杂,程序主要逻辑如下: 首先对字符情况进行整合,以空格、换行符、划线情况为分隔点,将字符下有划线的连到一起,无划线也连到一起,形成数组。之后采用以下逻辑识别错误标识:①针对删除内容的比对。逻辑为:更改前删除的内容,更改后不应出现,但如果出现(两个位置仅删除一个时),为防止误报警,要求其位置所在处的前一部分内容或后一部分内容至少有一个相同。②针对更改内容的比对。逻辑为:若实际未更改,则前位置内容或后位置内容加它一定出现在更改前的内容里,则标识为划线错误。③针对增加内容的比对。逻辑为:不划线的更改后内容一定在更改前内容中,若不满足则标识为划线错误。④若更改前与更改后内容相同,则标识为划线错误。
之后对获取的更改单编号进行分析,同样采用正则表达式,获取其中的机型和工艺规程编号信息,与更改单文档中固定位置的数据进行比对,如不一致,以批注的方式进行标识。
3.3 特殊情况的处理
1)中括号“[]”。在VBA语言中中括号有特殊含义,为防止出错必须在文字读入前进行替换,问题输出时再换回。
2)省略号“…”。在新罗马字体下显示效果与宋体显示效果不同,可在统一设置后再单独设置为宋体,可采用Selection.Find函数进行查找并获取字符位置t,并采用以下代码设置字体:
4 基于VBA编程的工艺规程更改单一键标准化方法应用
在表格中右键点击,选择“更改单标准化”并点击,即可运行程序,运行完毕后若有问题,则显示为批注。按照批注内容更改完毕后可再次检查,确认无问题即可提交流程。该插件程序可作为模板嵌入到PDM系统中,使每个编辑人员均可享用一键标准化的便利。另外,程序设置了“删除所有批注”的选项,便于错误批注校对时使用,如图2所示。
以上标准化过程所花费时间平均不超过10s,大幅节约了人工编写时间,且可在序号栏、型号栏等内容填写方面做到100%的错误避免。插件程序自在工厂上线运行以来,大大降低了更改单标准化的学习成本和工作時间,并以其快速、准确、可信的特点,逐步成为技术人员编写更改单过程中的必备。
5 结束语
办公自动化软件因定制化程度较高而难以推广,本文提供了一种新的解决途径,即根据工作习惯,在深入了解数据模型后自行编制符合工作要求的软件。在以新技术、新设备、新应用为代表的航空维修单位的变革过程中,随着技术文件标准化、规范化要求的不断加深和提高,VBA编程语言将发挥越来越大的作用。
参考文献
[1] Excel Home编著.别怕,Excel VBA其实很简单[M].北京:北京大学出版社,2016.
[2] Excel Home编著. Excel 2010 VBA实战技巧精粹[M].北京:人民邮电出版社,2015.
作者简介
张康华,工程师,主要从事发动机附件修理技术研究。
杨武奎,工程师,主要从事发动机附件修理技术研究。