刘旭光 刘皓媛
1.安徽交通职业技术学院 城市轨道交通与信息工程系;2.安徽师范大学计算机与信息学院
Office是目前应用最为广泛的办公处理软件之一,它具有强大的文档业务处理能力。在Office中使用VBA编程进行二次开发,能实现文档扭转的自动化。利用VBA对Office中的文档内容进行转换与提取再通过Email发送给同事。本文以日常工作中涉及的文档为例,展示Office中VBA批量提取数据的强大功能及多邮件一次性发送功能,将用户从简单而重复的数据处理工作中解脱出来,提高办公效率及信息无差错传递。
日常工作中,我们经常编辑文件进行任务安排,比如学校里每一学期都有若干次考试安排,需要编排考务信息等,当考务文档编辑完成后要通过QQ、微信或者电话一个一个通知到教师,告诉他的监考任务;在编辑某个Excel数据表后我们想将表格内容传给某些同事预览但不希望文档内容被改动;再比如我们设计好一个PPT演示文档后,需要将其分发给我们工作中的每个成员,等这些都要进行比较繁琐的电子文件传递分发工作,而由于分发到的工作伙伴不确定性,很难保证我们在数据文档的传递分发过程中不会遗漏传给某个人。而遗漏信息的分发将给我们的工作带来不可预见的损失。
因此,一套功能完备的信息推送软件对实际工作的意义特别重大,它可以准确无误地将数据推送给预先定义好的同事。在VBA的强大功能基础上,我们想利用VBA核心功能设计一套信息推送软件满足我们的日常文档扭转需要[1]。
基于VBA的智能推送系统设计目的就是在用户结束文档编辑后,利用交互方式自动将文档的内容截取或者整体发送给特定的工作伙伴,供工作伙伴借鉴或者将有关事宜通知到工作伙伴。在图1中清晰地描述了系统结构。
图1 工程结构图Fig.1 Engineering structure
该软件的重点在于各类文档信息编辑完成后,编辑人员确定是否启用VBA,如果启用VBA则调用底层的接口向自己的设定好的工作伙伴发送EMAIL或者QQ、短信等消息,本系统采用发送Email方式传递信息。系统的程序流程图如图2所示。
图2 软件流程图Fig.2 Software flow chart
因为需要在Office的文档编辑程序中调用VBA,而且根据不同的应用调用不同的VBA,但是在其他的正常文档编辑时,我们不需要启用这些VBA,所以需要设计一个启动Word、Excel与Powerpoint等的管理功能的程序,以确保它们使用不同的文档模板。在这个程序中有着启动Office软件的功能,同时还要有VBA加载及工作伙伴信息界定的功能,将其界面效果设计成类似QQ界面,当鼠标进入管理界面后,管理界面正常显示,鼠标离开窗体时,管理界面靠屏幕右边半隐藏显示,一旦单击了管理界面的最小化按钮则窗体隐藏在屏幕的系统盘托中[2]。它的核心代码如下:
软件所启动的文档编辑软件有Word、Excel与Power-Point等,在启动这些软件时要同时加载应用中的VBA模块[3]。
打开启用宏模板的Word程序对文档进行编辑操作,编辑完成后由宏将刚保存的Word文档转换为PDF文件,转换为PDF后再由Word宏启动Email信息发送,把当前文档的PDF作为附件发送到工作伙伴的Email信箱中[4]。
那么在控制管理模块中启动Word程序如下:
在上述代码中的最后一行调用Email发送事件,向工作伙伴发送Email,并将当前文档的PDF作为附件发送给工作伙伴,其实现语句如下:
bo = sendqqmail.QQ_email(qqid, Title, body,attachment)
在图3的界面中,如果用户单击“是”按钮,则向选定的工作人员发送EMAIL。
图3 Word文档退出时的对话框Fig.3 Dialog box when Word document exits
其他的Excel与PowerPoint文档编辑与发送信息如同Word文档一样操作[6]。
由于本软件项目使用的发送Email场合非常多,我们在设计时将它作为DLL动态链接库进行开发,发送Email代码如下:
(4)编译SendQQClass这个Project。会在 SendQQClassinDebug下面生成3个文件。SendQQClass.dll,SendQQClass.pdb,SendQQClass.tlb。其中SendQQ Class.tlb就是我们要在VBA中引用的,通过它就可以引用SendQQClass.dll。
这样配置与编译后在低版本的软件中就可以调用SendQQClass.tlb文件进行Email发送了[8]。
有了这些技术知识准备后,就解决了系统开发的技术难点。在系统开发过程中选择灵活的架构、技术和设计方法。另外开发完成后即进入试运行阶段,要不断探索如何提高研发的效率与用户的满意度从而进行软件的改善。
在使用这套系统后,我们可以方便地将自己的工作文档进行创建、修改等编辑操作,在文档编辑工作完成退出Word、Excel或者PowerPoint应用程序时,系统会自动调用Access数据库与VBA代码判断是否将刚进行编辑的文档发送给工作伙伴,这样作到了对工作任务、工作协同、工作通知等内容尽快发送到工作伙伴的手中,做到了信息无遗漏的传递,使工作人员很有效快捷地开展工作。
引用
[1] 胡振,陈素彬,唐天国,等.基于Excel-VBA的基础教育教学质量综合评价软件设计[J].微型电脑应用,2021,37(6):58-62.
[2] 周云飞,李芳,安政,等.基于C#与Matlab混合编程在瓦斯预测系统中的应用[J].山西能源学院学报,2020,33(6):96-98+102.
[3] 李小遐.Excel VBA在办公自动化中的应用[J].电子测试,2014(22):105-106+95.
[4] 何振娟,王玮,刘海,等.EXCEL中VBA及WORD邮件合并功能在批量处理报表中的应用[J].电脑知识与技术,2021,17(6):212-214.
[5] 屠海锋,邢美园.基于Word+VBA的SCIE文献引证报告批处理方法[J].现代计算机,2021(10):143-146+160.
[6] 何振娟,王玮,刘海,等.EXCEL中VBA及WORD邮件合并功能在批量处理报表中的应用[J].电脑知识与技术,2021,17(6):212-214.
[7] 刘军,齐志飞.DLL二次开发测绘程序的优势[J].城市勘测,2005(1):27-28+36.
[8] 张正,贾小林.面向NB-IOT智能设备动态链接库的远程技术研究及应用[J].计算机应用与软件,2021,38(6):170-175.